标签: object-initializers

对象初始化器和构造器

我试图使用Object初始化器来设置类的属性,然后在类的构造函数中访问它们.问题是在构造函数运行之后似乎没有设置属性.难道我做错了什么.

基础班..

public class TestClass
{
    public string FirstName{get; set;}

    public TestClass(){
       NewClass nc = NewClass(FirstName);
    }

}
Run Code Online (Sandbox Code Playgroud)

客户类

public class ClientClass
{
   public ClientClass(){
      TestClass tc = new TestClass{ FirstName="Jimmy"};
   }
}
Run Code Online (Sandbox Code Playgroud)

c# object object-initializers

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

为什么我不能在ASP.NET 2.0中使用对象初始化器?

为什么我可以Object Initializers在针对.NET 2.0的Visual Studio 2008 Windows项目等中使用但不能 - 在针对.NET 2.0的ASP.NET项目中?

我知道这是C#3.0的功能,但不要 - 为什么这可以在.NET 2.0项目中使用.

c# asp.net object-initializers

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

"在构造函数和初始值设定项中,在使用对象初始值设定项语法时,仅支持属性或字段参数绑定"

我在实体框架查询中遇到一个非常奇怪的问题,我花了几个小时.

执行查询时,我得到一个异常:

在构造函数和初始值设定项中,LINQ to Entities中仅支持属性或字段参数绑定.

描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.NotSupportedException:在构造函数和初始值设定项中,LINQ to Entities中仅支持属性或字段参数绑定.

我知道当您调用带有查询内部参数构造函数时,通常会发生此问题.这很自然,因为LINQ to Entities无法知道那里发生了什么.

但是,我的查询只使用对象初始化程序语法来填充值,我假设将调用默认的无参数构造函数:

private static readonly Func<MyEntities, int, MessageParty> _getUserMessagePartyQuery = CompiledQuery.Compile(
    ( MyEntities ctx, int id ) =>
        ctx.Users
        .Where( u => u.ID == id )
        .Select( u => new {
            u, up = u.UserProfile, img = u.UserProfile.Image
        })
        .Select( info => new MessageParty
        {
            PartyID = id,
            Title = info.u.FullName,

            // Assignment below causes the failure:
            Image = {
                Image = info.img, …
Run Code Online (Sandbox Code Playgroud)

c# linq-to-entities entity-framework object-initializers entity-framework-4

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

如何处理无用的init?

这是我现在拥有的init,

- (id)init 
{
    self = [super init];

    if (self) {
        self.url = [[NSURL alloc] init];
        self.blurb = [[NSString alloc] init];
        self.author = [[NSString alloc] init];
    }

    return self;
}
Run Code Online (Sandbox Code Playgroud)

它什么也不做,但我有一个称为另一种方法initWithObject:将使用它的参数来填充实例变量url,blurbauthor.我不知道我应该怎么做init.我应该抛出异常吗?我还有其他选择吗?

cocoa-touch coding-style objective-c object-initializers

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

visual basic等效于"rectangle a = new a(){width = 1; height = 2;}"

rectangle a=new a() { width=1; height=2; }
Run Code Online (Sandbox Code Playgroud)

我曾经构建过像这样的对象,在visual basic中有类似的方法吗?对不起,我无法真正标记这项技术.

c# vb.net initialization object-initializers

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

如何在c#中访问对象?

我有一个名为data的对象,属于该类,

[DataContract]
public class names
{
    [DataMember(Name = "code")]
    public int Code { get; set; }

    [DataMember(Name = "message")]
    public string Message { get; set; }

    [DataMember(Name = "values")]
    public values values{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

其中value是另一个具有自己变量的类,最初在执行以下代码时,

names data= new names();
data.values.Name = "";
Run Code Online (Sandbox Code Playgroud)

执行第二行时,我得到一个null异常.

问题是什么?为什么data.values.Name即使在执行后仍然为null

names data= new names();
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能给它一些价值?

.net c# initialization object-initializers

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

你如何从initialize方法调用类方法?

我试图在其初始化方法中调用类中的方法.这是不允许的?我最初在类之外使用了方法来尝试将其用作全局方法.当前方法尝试返回创建的矩阵,然后initialize方法将返回的矩阵保存到实例变量中.

class Member
  def setMatrix(a, i, l)
    puts "here"
    m = Matrix.zero(6)
    m[0,0] = a*l**2/i
    m[0,3] = -a*l**2/i
    m[1,1] = 12
    m[1,2] = 6*l
    m[1,4] = -12
    m[1,5] = 6*l
    m[2,1] = 6*l
    m[2,2] = 4*l**2
    m[2,4] = -6*l
    m[2,5] = 2*l**2
    m[3,0] = -a*l**2/i
    m[3,3] = a*l**2/i
    m[4,1] = -12
    m[4,2] = -6*l
    m[4,4] = 12
    m[4,5] = -6*l
    m[5,1] = 6*l
    m[5,2] = 2*l**2
    m[5,4] = -6*l
    m[5,5] = 4*l**2
    return m
    #@k = m
   end

   def initialize(a, …
Run Code Online (Sandbox Code Playgroud)

ruby class matrix object-initializers

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

对象初始化器语法混乱.在初始化程序中使用括号?

所以我正在查看文档以了解如何使用对象初始化程序,无论是否为匿名类型.我唯一想知道的是为什么(如果重要的话)在这个例子中存在差异.

它是这样的:对于一只猫

class Cat
{
    public int Age { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我可以看到第一个例子:

Cat cat = new Cat { Age = 10, Name = "Fluffy" };
Run Code Online (Sandbox Code Playgroud)

这是有道理的.但是,您可以找到以下内容:

List<Cat> cats = new List<Cat>
{
    new Cat(){ Name = "Sylvester", Age=8 },
    new Cat(){ Name = "Whiskers", Age=2 }
};
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:(为什么)new Cat{...} 和之间存在差异new Cat(){...}?我们为什么要使用(或不使用)括号?

c# object-initializers

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

如何构造Dictionary <string,List <string >>的实例

我试图用C#编写代码,但我发现我不能像C++这样构造一个实例:

Dictionary<string, List<string>> FirSet =
    new Dictionary<string, List<string>>() {
        { "a", {"ab", "abc"} },
        { "b", {"bc", "bcd"} }
    };
Run Code Online (Sandbox Code Playgroud)

c# object-initializers

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

为什么在对象初始值设定项内部允许使用不带“new”的集合初始值设定项,而在对象初始值设定项外部则不允许?

我在初始化集合属性时注意到奇怪的行为。

考虑:

class X
{
    public IList<int> Ints { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Ints我可以这样初始化:

var theObject = new X
{
    Ints = { 12, 3, 4, 5, 6 }
};
Run Code Online (Sandbox Code Playgroud)

但我不能这样做:

var x = new X();

x.Ints = { 12, 3, 4, 5, 6 }
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?这似乎很不直观。

c# object-initializers collection-initializer

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