我安装了Visual Studio 15 Preview 3并尝试使用新的元组功能
static void Main(string[] args)
{
var x = DoSomething();
Console.WriteLine(x.x);
}
static (int x, int y) DoSomething()
{
return (1, 2);
}
Run Code Online (Sandbox Code Playgroud)
当我编译时,我收到错误:
未定义或导入预定义类型'System.ValueTuple'2'
根据博客文章,这个功能默认情况下应该"打开".
我做错了什么?
有没有从C++函数返回多个值的首选方法?例如,假设一个函数分割两个整数并返回商和余数.我经常看到的一种方法是使用参考参数:
void divide(int dividend, int divisor, int& quotient, int& remainder);
Run Code Online (Sandbox Code Playgroud)
一种变化是返回一个值并通过引用参数传递另一个值:
int divide(int dividend, int divisor, int& remainder);
Run Code Online (Sandbox Code Playgroud)
另一种方法是声明一个包含所有结果的结构并返回:
struct divide_result {
int quotient;
int remainder;
};
divide_result divide(int dividend, int divisor);
Run Code Online (Sandbox Code Playgroud)
这些方式中的一种通常是首选,还是有其他建议?
编辑:在现实世界的代码中,可能会有两个以上的结果.它们也可以是不同类型的.
我想用out参数编写一个异步方法,如下所示:
public async void Method1()
{
int op;
int result = await GetDataTaskAsync(out op);
}
Run Code Online (Sandbox Code Playgroud)
我该怎么办GetDataTaskAsync?
昨天我和同事讨论了什么是首选的错误报告方法.主要是我们讨论了异常或错误代码的使用,以报告应用程序层或模块之间的错误.
您使用什么规则来决定是否抛出异常或返回错误代码以进行错误报告?
我有这样的方法:
private double GetHeight()
{
return 2;
}
Run Code Online (Sandbox Code Playgroud)
但是我希望能够返回两个不同的数字,例如2和3。在C#中有什么方法可以实现?
我尝试使用Try Catch块提高我的技能并更好地处理错误.
我有一个执行常见任务的类,在这种情况下检索Facebook AccessToken.如果成功,我想返回AccessToken字符串,如果不是,我想返回错误消息.这些都是字符串,所以没问题.但是当检查代码调用端的返回值时,如何有效地执行此操作?
这就像我需要返回2个值.在成功尝试的情况下,返回= true,"ACESSCODEACXDJGKEIDJ",或者如果失败,则返回= false,"Ooops,出现错误"+ ex.ToString();
然后检查返回值很容易(理论上).我可以想到返回一个true/false返回,然后为字符串设置一个Session变量.
什么是从方法返回多个结果的方法?
这是一个非常基本的问题,如果我正在考虑做的事情很复杂/涉及,那么我不希望你详细说明......我读过这可能涉及结构或哈希或其他一些可怕的程序我还没到.如果是这样,我相信它会很快得到我.
学习类,方法和返回值.
我想让我的班级/方法返回当前小时和分钟.很简单,真的.这是正确构造还是正确构造?
class MyClass
{
public int GetHour (int hr, int min)
{
DateTime dt = DateTime.Now;
int hour = dt.Hour;
int minute = dt.Minute;
return hour;
return minute;
}
}
Run Code Online (Sandbox Code Playgroud)
并且,从Main()以下方面调用它:获得一些错误(No overload for method和Unreachable code detected)
static void Main ( string[] args )
{
MyClass mc = new MyClass ();
Console.WriteLine ("Hour: {0} \n Minute: {1}", mc.GetHour());
Console.ReadLine ();
}
Run Code Online (Sandbox Code Playgroud)
问题是:我关闭了吗?
我正在使用Xamarin,我需要看起来像这样的东西:
public Colors = new object() {
Blue = Xamaring.Color.FromHex("FFFFFF"),
Red = Xamarin.Color.FromHex("F0F0F0")
}
Run Code Online (Sandbox Code Playgroud)
所以我以后可以这样做:
myObject.Colors.Blue // returns a Xamarin.Color object
Run Code Online (Sandbox Code Playgroud)
但是,当然,这不编译.显然,我需要为此创建一个完整的新类,我真的不想做,也不认为我应该这样做.在javascript中,我可以做这样的事情:
this.colors = { blue: Xamarin.Color.FromHex("..."), red: Xamarin... }
Run Code Online (Sandbox Code Playgroud)
C尖锐的东西可以帮我快速实现吗?谢谢
我已经查看了许多与此类似的问题,但没有一个真正涉及到我想要做的事情.我要做的是从外部源读取一个变量列表,其中还包括它们的数据类型到字符串数组中:
例:
ID/Key Type Value/Data;
varName1 bool true;
varName2 string str;
varName3 int 5;
Run Code Online (Sandbox Code Playgroud)
然后我将这些对象存储到字典中作为包含多个字符串的对象,ID也用作键.
我想要做的是现在创建一个方法,该方法使用switch语句将字符串转换为正确的数据类型,并返回它而不必在方法调用中指定任何内容.该函数应如下所示:
public ??? Method(string key)
{
if(dictionary.ContainsKey(ID))
{
Var temp = dictionary[ID];
switch (temp.Type)
{
case "bool":
return Convert.ToBoolean(temp.Value);
case "int"
return Convert.ToInt(temp.Value);
case "string"
return temp.Value;
}
}
return "NULL";
}
Run Code Online (Sandbox Code Playgroud)
方法调用应该如下所示:
int x = Method(string key);
string word = Method(string key);
bool isTrue = Method(string key);
Run Code Online (Sandbox Code Playgroud)
也许我错过了一些东西,但我还没有找到真正做到这一点的东西.任何和所有关于这一点的想法也是受欢迎的.
c# ×8
methods ×2
return ×2
.net ×1
async-await ×1
c#-7.0 ×1
c++ ×1
collections ×1
generics ×1
javascript ×1
object ×1
return-value ×1