我需要了解一些澄清:C#「爲」操作者和高級轉化使用在環路/功能和輸出/ ref參數調節劑和typeof運算()
是/隨着運營商
出/ ref參數改性劑
typeof
隨意只回復你知道的或你想回復的內容,如果你不喜歡的話,不要回答整個問題。
是的,我問這些澄清。糾正我或增加我已經說過的話。
嗯,我GOOGLE了一下,落在了各種網站上,MSDN等。我仍然需要一些人寫一些代碼來幫助我澄清整個概念,並最終讓我充分利用它,希望這對其他人也有幫助。
基本上這就是我理解的:
A)是
在僞
如果對象是這種類型的返回true,否則假
容易。或者我在這裏做錯了什麼?
是否有任何限制或問題與某些類型的?
此代碼運行正常,所以我想我得到這個好。
object s = new SqlBoolean();
if (s is SqlBoolean)
{
Console.WriteLine("Is SqlBoolean");
Console.ReadLine();
}
2)爲
好了,我還是要充分了解這一點。
MSDN報告:
as運算符用於執行兼容 類型之間的轉換。 as運算符就像一個類型轉換,除了它在 轉換失敗而不是引發異常時產生空值。
嗯,我嘗試過的對象陣列上的循環,它基本上只轉換原語,並與不少問題(每鑄造比有點困難更拋出空或東西)
即
using System;
using System.Data.SqlTypes;
class StackOverflow
{
public static void Main()
{
string country = "jii";
string vatNum= "dde";
object[] MyObjects = {country,
vatNum
};
for (int i = 0; i<=MyObjects.Length-1;i++)
{
MyObjects[i] = MyObjects[i] as SqlString?;
Console.WriteLine(MyObjects[i].ToString() + " " + MyObjects[i].GetType());
Console.ReadLine();
}
}
}
在我正在做的一個程序中,我需要將這些值轉換爲SqlStrings,SqlBooleans等。在事實上,我強迫的SqlString與線可空
注重「的SqlString?」問號在最後(?力可空,誰知道它!:D)。
所以基本上它是做不使用異常的一些低級別的轉換有用嗎?或者是什麼?
3)REF和出
嗯,基本上REF從函數內改變預聲明變量的值:
IE
using System;
class StackOverflow
{
public static void Main()
{
int x = 10;
Write(func(ref x).ToString());
Write(Convert.ToString(x));
}
public static int func(ref int y)
{
y += 10;
return y;
}
public static void Write(string z)
{
Console.WriteLine(z);
Console.ReadLine();
}
}
執行此將確定和輸出將是20 20 去除兩個參考將輸出20 10
(ref直接更改外部聲明的x,而沒有在方法中創建實例)
out of out?什麼用途????
我無法得到它。看起來它看起來就像是一個參數,它可以做同樣的ref,但它可以讓你以某種方式擁有一些輸出參數。
在前面顯示的代碼中代替ref只會導致IntelliSense出現編譯錯誤,我甚至不知道如何讓這些輸出參數顯示出來。
在一個項目中,我在做我使用下面的代碼:
public static Array check(string country, string vatNum)
{
bool valid;
string name;
string address;
checkVatService vatchecker = new checkVatService();
vatchecker.checkVat(ref country, ref vatNum, out valid, out name, out address);
return new object[] {country,
vatNum,
valid,
name,
address
};
}
現在,checkVat從european online checking webservice.
我看到它有out參數一些代碼,它們通過產生從web服務網站(link to library, if needed)
的wsdl web服務使用庫如何使用out參數?他們是否有一些輸出沒有使用回報?我如何使用它們?請非常詳細
4)的typeof
這將返回從您傳遞給它的類型的System.Type類型。
首先我想我能得到我傳遞給它像
int x;
SqlBoolean xy = new SqlBoolean();
typeof(x) // integer
typeof(xy) // SqlBoolean
任何對象的類型,但它不是。
它只是從System.Type返回類型。
像
的typeof(INT)的ToString()// System.Int32或類似的東西 的typeof(XY)的ToString()// System.Data.SqlTypes.SqlSqlBoolean
和我真的不知道該怎麼做。
爲了得到一個對象的類型,你必須做一些類似於.GetType的東西。
那麼typeof的實際用途是什麼,我錯過了什麼?
感謝任何人
閱讀這些運營商的文檔將遠遠超過詢問他們#2更富有成效。 – Matthew
代碼'MyObjects [i] = MyObjects [i] as SqlString?;'根本沒有任何意義。如果對象不是'SqlString',它會將值設置爲'null',但如果數組存在空對象...顯然,如果對象不是'SqlString',那麼您將擁有一個下一行訪問衝突。如果你曾經試過你的代碼,你會發現它不起作用,它應該給你提示你的代碼是無效的,你應該閱讀官方的MSDN文檔。 – Phil1970