草庐IT

c# - 为什么 c# 编译器需要在 switch 构造中使用 break 语句?

我很难理解为什么编译器需要使用break语句。不可能错过它,因为现在允许掉落。我看到了C或C++中断的原因,但这里是否需要中断。为什么在案件结束后中断不是内置行为?它不只是没有语义的语法吗?抱歉,如果这是一个愚蠢的问题。编辑:仅当案例为空时才允许掉落。当那里有语句时,你不能省略break语句。所以,这是另一回事。 最佳答案 编译器并不“需要”break语句,它需要它们。这是一个设计决定。它使代码在语义上接近C和C++,同时消除了一直是C语言的一个有争议的“特性”的失败陷阱。 关于c#-为

c# - BlankPage 构造函数无法初始化组件

我开始learningXAML然后我将一些代码添加到我的BlankPage应用程序中。突然有一个正在初始化组件的构造函数:publicBlankPage(){this.InitializeComponent();}停止工作。我现在有这个错误:'BlankApplication.BlankPage'doesnotcontainadefinitionfor'InitializeComponent'andnoextensionmethod'InitializeComponent'acceptingafirstargumentoftype'BlankApplication.BlankPage'

c# - WPF 自定义控件构造、触发器和事件

我想构建一个新的自定义控件。我发现很少有教程能给我一些关于如何实现这一目标的线索。据我了解,创建新的自定义控件总是通过扩展当前控件来完成的,甚至可以扩展来自层次结构最基本级别的控件,例如,您甚至可以扩展:UI元素框架元素控制内容控制标题内容控件项目控制选择器范围基准如以下教程中所写:http://wpftutorial.net/HowToCreateACustomControl.html因此,我按照教程创建了一个自定义控件库类型的新项目,得到了我的通用.xaml和我的代码。到目前为止一切顺利。我可以区分3种类型或类别的事件。将由将使用我的控件的窗口(或容器)使用的事件:这些是我想向外部

c# - 为什么静态字段初始化发生在静态构造函数之前?

以下代码:staticvoidMain(string[]args){Console.WriteLine("0");stringh=Foo.X;Console.WriteLine("2");}publicstaticclassFoo{publicstaticstringX=((Func)delegate(stringg){Console.WriteLine(g);return(g);})("_aaa");staticFoo(){Console.WriteLine("ctor");}}将打印:0_aaactor2我知道beforefieldinit行为(有/没有静态构造函数等)。我不明白的

c# - 无参数构造函数

在C#中,有没有办法强制类必须具有无参数构造函数? 最佳答案 如果您在谈论通用约束,是的:classSomeContainerwhereT:new(){...}如果你在谈论继承。不可能要求每个实现你的接口(interface)或继承你的基类的类都有一个无参数的构造函数。你能做的最好的事情就是在你的基础构造函数中使用反射来抛出一个异常(在运行时),就像这样:abstractclassMyBase{protectedMyBase(){if(GetType().GetConstructor(Type.EmptyTypes)==null)t

c# - C# 如何知道何时运行静态构造函数?

我不相信生成的代码会在每次访问静态成员(包括函数)时检查类是否已初始化。我相信检查每次访问都是低效的。我查看了ECMA334中的§17.11,它说Theexecutionofastaticconstructoristriggeredbythefirstofthefollowingeventstooccurwithinanapplicationdomain:Aninstanceoftheclassiscreated.Anyofthestaticmembersoftheclassarereferenced.看起来没有定义如何确定“第一次”发生的时间。我想不出任何办法,只能每次检查。如何实现

c# - 有没有一种方法可以在不使用构造函数的情况下初始化结构的成员?

我有一个包含两个列表的结构:structMonthData{publicListFrontline;publicListLeadership;}但是,我想在创建结构时初始化两者。如果我尝试:structMonthData{publicListFrontline=newList();publicListLeadership=newList();}然后我得到:Error23'MonthData.Frontline':cannothaveinstancefieldinitializersinstructs...由于结构不能有无参数的构造函数,我也不能只在构造函数中设置它。到目前为止,我只能看

c# - 构造函数应该解析输入吗?

通常,我发现我必须实例化一堆对象,但我发现将此实例化的参数作为人类可读的文本文件提供更容易,我手动编写并将其作为输入输入到程序中。例如,如果对象是Car,那么文件可能是一堆行,每行包含名称、速度和颜色(三个必需的构造函数参数),用制表符分隔:Mycar65RedArthur'scar132PinkOldjunkcar23Rustbrown这对我来说很容易进行目视检查、修改或由另一个程序生成。然后程序可以加载文件,获取每一行,解析出相关参数,将它们提供给Car(stringname,intspeed,uintcolor)构造函数并创建对象。请注意在与构造函数兼容之前必须对输入做一些工作:

c# - 使用调用构造函数的静态方法是否有任何好处(语义或其他)?

我刚刚更新了VisualStudio2013,我注意到在MVC应用程序的项目模板中,ApplicationDbContext类现在有一个只调用构造函数的静态方法:publicstaticApplicationDbContextCreate(){returnnewApplicationDbContext();}这对我来说似乎很困惑,但我想有一些语义原因我现在应该开始使用ApplicationDbContext.Create()而不是newApplicationDbContext()。这样做有什么好处吗? 最佳答案 其实。是的。在您的特

c# - 为什么 String 类没有无参数构造函数?

int和object有一个无参数的构造函数。为什么不是string? 最佳答案 因为这样做没有意义。string是不可变的。创建一个空的string是没有用的。MSDN:Stringsareimmutable--thecontentsofastringobjectcannotbechangedaftertheobjectiscreated,althoughthesyntaxmakesitappearasifyoucandothis.正如JonathanLonowski所指出的,我们有string.Empty。