gpt4 book ai didi

c# - 是否有等效于 C# 成员大括号初始化功能的 Objective-C/C++?

转载 作者:太空狗 更新时间:2023-10-30 03:54:06 30 4
gpt4 key购买 nike

除了“var”(see my other post here)之外,我真正喜欢 C# 的一件事是我既可以声明,又可以使用大括号初始化类的成员,就像这样...

var reallyLongFooVarName = new ReallyLongFooClassName(){
Name = "I'm an instance of Foo",
ID = 23 };

甚至在一行中,像这样...

var longFooVarName = new ReallyLongFooClassName(){ Name = "I'm an instance of Foo", ID = 23 };

这将创建一个 ReallyLongFooClassName 实例,然后设置其成员“Name”和“ID”。

这会编译成与您键入此内容相同的内容...

ReallyLongFooClassName reallyLongFooVarName = new ReallyLongFooClassName();
reallyLongFooVarName.Name = "I'm an instance of Foo";
reallyLongFooVarName.ID = 23;

那么 Objective-C/C++ 有什么等同于 C# 的成员大括号初始化的东西吗?

注意:感谢我的另一篇文章,我已经知道“auto”是 Objective-C++ 中的“var”等价物,但 Objective-C 没有这样的等价物,这很遗憾。同样,see my other post here了解更多信息。)

更新

我知道编写初始值设定项。那是完全不同的节拍。我在上面演示的技术在 C# 中使用属性的 setter ,或者直接设置成员变量而无需编写构造函数(它们相当于 Objective-C 的“init”成员。)必须编写 init 成员迫使你必须预先指定要设置的内容。成员大括号初始化允许您指定属性/成员变量的任意组合并以您想要的顺序指定。同样,它只是一次编写多行代码的语法糖。它实际上并没有改变类。

最佳答案

如果您考虑使用 Objective C/C++,有多种选择。

Objective-C :

在类A中创建初始化方法为;

@interface ClassA:NSObject
-(id)initWithName:(NSString*)name id:(NSUinteger)id;
@end

@implementation ClassA{
NSString *name;
NSUinterger id;
}

-(id)initWithName:(NSString*)name id:(NSUInteger)id{
self = [super init];
if(!self)
return nil;
self -> name = name;
self -> id = id;
return self;
}

正在初始化;

[[ClassA alloc] initWithName:@"MyName" id:1000];
Objective C alternative,

使用类或结构;

使用结构;

struct MyClass{
NSString *name;
NSString *identifier;
MyClass(NSString *name, NSUInteger identifier):name(name), identifier(identifier);

};

正在初始化;

MyClass *myclass = new MyClass(@"Sandeep", 1000);

使用类;

class MyClass{
private:
NSString *name;
NSString *identifier;
public:
MyClass(NSString *name = @"", NSUInteger identifier = 0);

};

我认为这应该可以回答您的问题。

关于c# - 是否有等效于 C# 成员大括号初始化功能的 Objective-C/C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14299063/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com