(读完这篇文章及其接受的答案后,这个问题突然出现在我的脑海中。)
假设一个Foo您无法修改的类,它有一个publicmember bar,但没有它的 getter 。
您可能想要编写一个函数来在传递 a 时获取该成员Foo,以便您可以在更高阶的函数中使用它,例如std::transform和 类似的函数。
换句话说,给定这样一个类
struct Foo {
int bar{};
~Foo() { bar = -1; } // on most compilers this helps "verifying" that the object is dead
};
Run Code Online (Sandbox Code Playgroud)
我想要一些getFoo与具有相同语义的类型,其中是 类型的任何对象,可以是纯右值、x值或左值。getBar(expr-of-type-Foo)expr-of-type-Foo.barexpr-of-type-FooFoo
你怎么写呢?
我最初想到的是:
constexpr auto getBar = overload(
[](auto& foo) -> decltype(auto) { return (foo.bar); },
[](auto const& foo) -> decltype(auto) { return …Run Code Online (Sandbox Code Playgroud) 在过去的几天里,我一直在阅读C#中的属性和方法之间的差异,以及何时使用它们.我读到的大多数文章/问题都说吸气剂应该是"轻巧的",并且内部永远不会有大量的逻辑或复杂的操作.
现在我有一个get我认为在属性和方法之间的界限,所以我想看看你们都在想什么,如果我应该改变方法或留在吸气剂.
还欢迎任何其他建议:D
public decimal[] getPreprocData
{
get
{
int i = 3;
decimal[] data = new decimal[9];
data[0] = (start.Value.Hour * 3600) + (start.Value.Minute * 60);
data[1] = duration.Value;
data[2] = flowRate.Value;
foreach (NumericUpDown nud in gbHTF.Controls.OfType<NumericUpDown>().OrderBy(nud => nud.TabIndex))
{
data[i] = nud.Value;
i++;
}
return data;
}
}
Run Code Online (Sandbox Code Playgroud) 我经常使用二传手.这是我对此的代码:
.H:
@property (nonatomic, strong) NSDate *lastSyncDate;
Run Code Online (Sandbox Code Playgroud)
.M:
-(void)setLastSyncDate:(NSDate *)lastSyncDate {
_lastSyncDate = lastSyncDate;
//Do something
}
Run Code Online (Sandbox Code Playgroud)
然后我输入了一个getter方法:
-(NSDate *)lastSyncDate {
//Something happens
return lastSyncDate;
}
Run Code Online (Sandbox Code Playgroud)
然后_lastSyncDate标识符发出unidentified identifier错误.
我不确定为什么会这样?
是否可以选择为两个变量执行一个setter/getter?或者唯一的选择是两个单独的setter/getter,如下所示:
int var1;
int var2;
public int var1
{
get { return var1; }
set { var1 = value; }
}
public int var2
{
get { return var2; }
set { var2 = value; }
}
Run Code Online (Sandbox Code Playgroud) 我需要创建一个类Person,有字段:
name,surname和salary.如果salary低于0,我得到例外:
ArgumentOutOfRangeException.使用getter,setter
我尝试过:
public class Employee
{
public string name { get; set; }
string surname { get; set; }
private int salary;
public int Salary
{
get
{
return salary;
}
set
{
if (salary < 0)
{
throw new ArgumentOutOfRangeException("salary", "wyplata ma byc wieksza niz 0");
}
else
{
salary = value;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在主要:
Employee tmp = new Employee("michal", "jakowski", -1400);
Run Code Online (Sandbox Code Playgroud) 我正在使用 C++ 来完成我的一个小项目。我想在类头文件中定义一个静态常量字符串,并使用(静态)getter 返回该字符串。这是头文件
//*.h
class Authordd : public personDB
{
public:
Authordd();
Authordd(QString dbName, QString dbSurname);
Authordd(QString dbName, QString dbSurname, unsigned int dbid);
static std::string getTableName();
private:
static const std::string tableName;
};
Run Code Online (Sandbox Code Playgroud)
这是cpp文件:
const std::string Authordd::tableName = "Author";
Authordd::Authordd():personDB()
{
;
}
Authordd::Authordd(QString dbName, QString dbSurname):personDB(dbName, dbSurname)
{
;
}
Authordd::Authordd(QString dbName, QString dbSurname, unsigned int dbid):personDB(dbName, dbSurname)
{
id = dbid;
}
static std::string getTableName(){
return (Authordd::tableName);
}
Run Code Online (Sandbox Code Playgroud)
编译时出现以下错误: /../persondb.cpp:21: error: 'tableName' is a private member of 'personDB' …
我可以简化这个吗...
\npublic class Foo : FooBase\n{\n public override Valor Nome\n {\n get\n {\n return new Valor\n {\n ValorEntrada = "ag\xc3\xaancia centro"\n };\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n......这样的事情?
\npublic class Foo : FooBase\n{\n public override Valor Nome => Valor.ValorEntrada = "ag\xc3\xaancia centro";\n}\nRun Code Online (Sandbox Code Playgroud)\nValor有一个名为 的属性ValorEntrada,它接收一个string.