草庐IT

Initialization

全部标签

c# - 为什么我必须在默认为 0 时为 C# 中的 int 赋值?

这个有效:classMyClass{inta;publicMyClass(){intb=a;}}但这会导致编译器错误(“使用未分配的局部变量‘a’”):classMyClass{publicMyClass(){inta;intb=a;}}据我所知,这是因为在第一个示例中,从技术上讲,编译器不知道“a”没有被赋值。在后一个示例中,“a”是在本地定义的,因此很容易跟踪。但为什么后面的例子不行呢?整数不是默认为0吗?这是编译器为“最佳实践”强制执行的内容吗?还是另有原因? 最佳答案 在第一个示例中,它是一个字段。字段自动默认为0/fals

c# - 如何将焦点设置到 Windows 窗体应用程序中的控件?

在Windows窗体应用程序中,何时编写代码以在应用程序启动时和随后调用函数后将焦点设置到控件?例如,如果我有一个DropDownList、一个TextBox和四个按钮,并且我希望将Focus设置到DropDownList,我应该在哪里编写代码?要在应用程序启动时将焦点设置到特定控件,我可以将选项卡索引设置为该DropDown(具有最小值,假设TabStop属性设置为True)。现在,如果用户完成一个操作(比如,任何点击按钮事件),然后我更新DropDown,之后如果我想设置焦点......我可以这样做MyDropDownList.Focus()问题注意:问题更多是关于哪里,而不是如何

c# - 如何将焦点设置到 Windows 窗体应用程序中的控件?

在Windows窗体应用程序中,何时编写代码以在应用程序启动时和随后调用函数后将焦点设置到控件?例如,如果我有一个DropDownList、一个TextBox和四个按钮,并且我希望将Focus设置到DropDownList,我应该在哪里编写代码?要在应用程序启动时将焦点设置到特定控件,我可以将选项卡索引设置为该DropDown(具有最小值,假设TabStop属性设置为True)。现在,如果用户完成一个操作(比如,任何点击按钮事件),然后我更新DropDown,之后如果我想设置焦点......我可以这样做MyDropDownList.Focus()问题注意:问题更多是关于哪里,而不是如何

c# - 在 C# 构造函数中初始化什么更好 : initializer lists or assignment?

A类使用初始化列表将成员设置为参数值,而B类使用构造函数体内的赋值。只要我始终如一,任何人都可以给出更喜欢其中一个的理由吗?classA{String_filename;A(Stringfilename):_filename(filename){}}classB{String_filename;B(Stringfilename){_filename=filename;}} 最佳答案 第一个在C#中是不合法的。构造函数中冒号后唯一可以出现的两项是base和this。所以我会选择第二个。 关

c# - 在 C# 构造函数中初始化什么更好 : initializer lists or assignment?

A类使用初始化列表将成员设置为参数值,而B类使用构造函数体内的赋值。只要我始终如一,任何人都可以给出更喜欢其中一个的理由吗?classA{String_filename;A(Stringfilename):_filename(filename){}}classB{String_filename;B(Stringfilename){_filename=filename;}} 最佳答案 第一个在C#中是不合法的。构造函数中冒号后唯一可以出现的两项是base和this。所以我会选择第二个。 关

c# - 了解 C# 字段初始化要求

考虑以下代码:publicclassProgressor{privateIProgressprogress=newProgress(OnProgress);privatevoidOnProgress(intvalue){//whatever}}这会在编译时产生以下错误:Afieldinitializercannotreferencethenon-staticfield,method,orproperty'Progressor.OnProgress(int)'我理解它提示的限制,但我不明白为什么这是一个问题,但是可以在构造函数中初始化该字段,如下所示:publicclassProgres

c# - 了解 C# 字段初始化要求

考虑以下代码:publicclassProgressor{privateIProgressprogress=newProgress(OnProgress);privatevoidOnProgress(intvalue){//whatever}}这会在编译时产生以下错误:Afieldinitializercannotreferencethenon-staticfield,method,orproperty'Progressor.OnProgress(int)'我理解它提示的限制,但我不明白为什么这是一个问题,但是可以在构造函数中初始化该字段,如下所示:publicclassProgres

c# - C# 'for' 循环中的多重初始化

我如何(如果可能的话)在C#for循环中初始化多个不同类型的变量?示例:for(MyClassi=0,intj=1;j 最佳答案 这是不可能的。在循环之前放置其中一个声明:MyClassi=0;for(intj=1;j或者为了对称,它们都是:MyClassi=0;intj=1;for(;j也有可能其中一个变量比另一个变量更主要。在那种情况下,将一个作为循环变量并单独处理另一个可能会更整洁,如下所示:MyClassi=0;for(intj=0;j请注意,如果i和j是同一类型,那么您可以在for循环中声明它们:for(inti=0,j=

c# - C# 'for' 循环中的多重初始化

我如何(如果可能的话)在C#for循环中初始化多个不同类型的变量?示例:for(MyClassi=0,intj=1;j 最佳答案 这是不可能的。在循环之前放置其中一个声明:MyClassi=0;for(intj=1;j或者为了对称,它们都是:MyClassi=0;intj=1;for(;j也有可能其中一个变量比另一个变量更主要。在那种情况下,将一个作为循环变量并单独处理另一个可能会更整洁,如下所示:MyClassi=0;for(intj=0;j请注意,如果i和j是同一类型,那么您可以在for循环中声明它们:for(inti=0,j=

c# - 如何初始化var?

我可以用null或一些空值初始化var吗? 最佳答案 C#是一种严格/强类型语言。var是为anonymoustypes的编译时类型绑定(bind)引入的但是您可以将var用于设计时已知的原始类型和自定义类型。在运行时,没有任何东西像var,它被替换为引用类型或值类型的实际类型。当你说,varx=null;编译器无法解决这个问题,因为没有绑定(bind)到null的类型。你可以这样做。stringy=null;varx=y;这会起作用,因为现在x可以在编译时知道它的类型,在这种情况下是字符串。