标签: object-initializers

Initializer或Static Initiliazer之间的区别?

当我XmlDOM在Asp.Net 中工作时,有一个这样的模式:`XmlReader reader = XmlReader.Create()".

然后我几次遇到相同的模式.

我想知道Static Constructor和"new ClassName()"构造函数之间有什么区别(我不确定我是否使用正确的术语来描述我的意思).

我不是在问什么XmlReader.Create(),我想学习的是为什么我会使用静态构造函数而不是?它会提供什么样的方面?我可以用静态构造函数做什么,但我不能用new关键字构造函数做.

提前致谢.

c# object-initializers

0
推荐指数
1
解决办法
104
查看次数

将C#转换为VB.net List <T>有错误

我正在尝试将一些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"}}

谢谢

c# vb.net object-initializers

0
推荐指数
1
解决办法
1779
查看次数

使用对象初始值设定项抛出新异常

我们考虑一下这段代码:

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声明一样,但官方文档在哪里?

c# exception object-initializers

0
推荐指数
1
解决办法
144
查看次数

在类成员中初始化变量是不好的做法吗?

如果变量的预期范围是真正的本地范围,那么保持这种方式对我来说是有意义的.这就是我一直以来所做的.但是我最近在工作时从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-initializers

0
推荐指数
1
解决办法
113
查看次数

没有默认构造函数的C#Object初始值设定项

我正在尝试使用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默认构造函数,你就不能使用对象初始化程序,但我这里没有私有的默认构造函数.

c# object-initializers

-2
推荐指数
1
解决办法
2487
查看次数

标签 统计

object-initializers ×5

c# ×4

c++ ×1

exception ×1

vb.net ×1