当我XmlDOM在Asp.Net 中工作时,有一个这样的模式:`XmlReader reader = XmlReader.Create()".
然后我几次遇到相同的模式.
我想知道Static Constructor和"new ClassName()"构造函数之间有什么区别(我不确定我是否使用正确的术语来描述我的意思).
我不是在问什么XmlReader.Create(),我想学习的是为什么我会使用静态构造函数而不是?它会提供什么样的方面?我可以用静态构造函数做什么,但我不能用new关键字构造函数做.
提前致谢.
我正在尝试将一些C#代码转换为VB,但是我收到了一个错误.什么是正确的VB语法?
C#
return new List<string> {"First Name", "Last Name", "First & Last Name", "None"};
Run Code Online (Sandbox Code Playgroud)
VB
Return New List(Of String)() From {"First Name", "Last Name", "First & Last Name", "None"}
Run Code Online (Sandbox Code Playgroud)
那么我怎么转换呢?Dim list As New List(Of Country)()From {New Country()With {Key .Name ="Select Country",Key .Code ="0"}}
谢谢
我们考虑一下这段代码:
try
{
return new ClassA.GetStuff();
}
catch (Exception e)
{
throw new MyException
("message", e)
{SomeMyExceptionProperty = "something"};
}
Run Code Online (Sandbox Code Playgroud)
投掷时MyException,对象初始化是如何完成的?像这样 :
MyException myException = new MyException("message", e);
myException.SomeMyExceptionProperty = "something";
throw myException;
Run Code Online (Sandbox Code Playgroud)
或者像这样(所以SomeMyExceptionProperty没有初始化):
MyException myException = new MyException("message", e);
throw myException;
myException.SomeMyExceptionProperty = "something"; //unreachable code
Run Code Online (Sandbox Code Playgroud)
我认为使用了第一个行为,就像return声明一样,但官方文档在哪里?
如果变量的预期范围是真正的本地范围,那么保持这种方式对我来说是有意义的.这就是我一直以来所做的.但是我最近在工作时从vim切换到eclipse,如果构造函数中没有初始化每个成员变量,eclipse会标记我的构造函数.例如,在下面的代码中,它编译得很好.g ++没问题.另一方面,Eclipse告诉我'a'应该在构造函数中初始化.
有什么理由可以说这个警告可能是相关的,还是值得忽略所有这些?
class C
{
public:
C(){}
~C(){}
void foo();
};
void C::foo()
{
int a;
}
int main() {
C c;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用c#object initializer创建一个对象.但是该类已经有一个构造函数,根据需要有一个参数,我不需要默认的construcor,所以我没有提供一个.当类中有用户提供的构造函数时,编译器也不会提供默认构造函数.
现在当我尝试使用对象初始化程序创建此类的实例时出现问题:
public class Foo
{
public int Data { get; set; }
public Foo(int Data)
{
this.Data = Data;
}
}
Run Code Online (Sandbox Code Playgroud)
我像这样实例化这个类:
Foo f=new Foo { Data=10};
Run Code Online (Sandbox Code Playgroud)
现在我得到一个编译时错误:
"Foo不包含带0参数的构造函数"
我知道错误,这是因为缺少默认构造函数.当我不需要默认构造函数时,为什么我应该只使用对象初始化程序?所以我只是想知道,有没有其他方式(样式,语法)我可以使用这个对象初始化程序而不显式提供默认构造函数?
我检查了这个MSDN链接,它说如果你的类中有一个PRIVATE默认构造函数,你就不能使用对象初始化程序,但我这里没有私有的默认构造函数.