Mar*_*eIV 5 c# objective-c member-initialization
除了'var'(参见我在这里的另一篇文章)之外,我真正喜欢C#的一个原因是我可以声明,然后使用大括号初始化类的成员,就像这样......
var reallyLongFooVarName = new ReallyLongFooClassName(){
Name = "I'm an instance of Foo",
ID = 23 };
Run Code Online (Sandbox Code Playgroud)
甚至在一条线上,像这样......
var longFooVarName = new ReallyLongFooClassName(){ Name = "I'm an instance of Foo", ID = 23 };
Run Code Online (Sandbox Code Playgroud)
这将创建一个ReallyLongFooClassName实例,然后设置其成员'Name'和'ID'.
这个编译成同样的东西,就像你输入这个......
ReallyLongFooClassName reallyLongFooVarName = new ReallyLongFooClassName();
reallyLongFooVarName.Name = "I'm an instance of Foo";
reallyLongFooVarName.ID = 23;
Run Code Online (Sandbox Code Playgroud)
那么Objective-C/C++有什么东西等同于C#的成员括号初始化吗?
注意:感谢我的另一篇文章,我已经知道'auto'是Objective-C++中的'var'等价物,但Objective-C没有任何这样的等价,这是一种耻辱.再次,请在此处查看我的其他帖子以获取更多信息.)
我知道写初始化器.这完全是一个不同的节拍.我在上面演示的技术在C#中使用属性的setter,或者直接设置成员变量而不必编写构造函数(它们等同于Objective-C的'init'成员.)必须编写init成员强制你必须预先指定您要设置的内容.成员大括号初始化允许您以任何您想要的顺序指定属性/成员变量的任意组合.同样,它只是一次编写多行代码的语法糖.它实际上并没有改变课程.
如果您考虑使用 Objective C/C++,有多种选择。
目标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;
}
Run Code Online (Sandbox Code Playgroud)
正在初始化;
[[ClassA alloc] initWithName:@"MyName" id:1000];
Objective C alternative,
Run Code Online (Sandbox Code Playgroud)
使用类或结构;
使用结构体;
struct MyClass{
NSString *name;
NSString *identifier;
MyClass(NSString *name, NSUInteger identifier):name(name), identifier(identifier);
};
Run Code Online (Sandbox Code Playgroud)
正在初始化;
MyClass *myclass = new MyClass(@"Sandeep", 1000);
Run Code Online (Sandbox Code Playgroud)
使用类;
class MyClass{
private:
NSString *name;
NSString *identifier;
public:
MyClass(NSString *name = @"", NSUInteger identifier = 0);
};
Run Code Online (Sandbox Code Playgroud)
我认为这应该可以回答你的问题。
| 归档时间: |
|
| 查看次数: |
479 次 |
| 最近记录: |