parameterexpression
用來建立變數、變數引數表示式。
在 c# 中,變數分為以下幾種型別:
一般上,只用到值型別和引用型別,這裡不會說到指標型別。
c#的基本值型別有:bool、byte、char、double、float、int、long等(c#中,陣列屬於引用型別)。
表示式樹建立乙個有兩種方式變數:
parameterexpression vara = expression.variable(typeof(int), "x");
parameterexpression varb = expression.parameter(typeof(int), "y");
區別:
expression.variable()
表示建立乙個變數;
expression.parameter()
表示建立乙個傳入引數;
至於使用區別,後面會有很多具體示例可以體會到。
相同點:生成的型別都是parameterexpression
。
例項:
int a;
parameterexpression vara = expression.variable(typeof(int), "x");
static void main(string args)
public static void test(int b)
引用型別亦是使用相同方法建立變數。
關於引用型別的示例方法,後面會使用到。
使用expression.constan()
定義乙個常量。
示例:
constantexpression constant = expression.constant(100);
constantexpression constant1 = expression.constant(100, typeof(int));
建議使用兩個引數的過載方法,這樣瀏覽**是,能夠快速理解,便於查詢修改。
expression.assign()
用於給表示式樹變數賦值。
常用定義如下
binaryexpression assign(expression left, expression right);
將右邊表示式的值,賦予左邊表示式。
為變數賦值:
parameterexpression a = expression.variable(typeof(int), "x");
constantexpression constant = expression.constant(100, typeof(int));
binaryexpression assign = expression.assign(a, constant);
console
的常用過載方法有
public static void writeline(object value);
public static void writeline(float value);
public static void writeline(string value);
在使用表示式樹時,注意要呼叫的過載方法,不能被正常**的隱式轉換誤導。
int a = 100;
console.writeline(a);
parameterexpression aa = expression.parameter(typeof(int), "a");
binaryexpression aaa = expression.assign(aa, expression.constant(100, typeof(int)));
methodcallexpression method = expression.call(null, typeof(console).getmethod("writeline", new type ), aa);
// 如果沒有學到過執行表示式樹,現在可以先忽略這裡
var call = expression.block(new parameterexpression , aaa, method);
expressionlambda = expression.lambda(call);
lambda.compile()();
前面輸出 變數 a ,系統會進行隱式的型別轉換。但是使用表示式樹呼叫方法,要對應型別才行,以便找到正確的過載方法。上面的表示式樹呼叫console.writeline()
會報如下錯誤:
system.argumentexception:「expression of type 'system.int32' cannot be used for parameter of type 'system.string' of method 'void writeline(system.string)'
arg_paramname_name」
表示式樹練習實踐 變數 常量與賦值
定義變數 parameterexpression 用來建立變數 變數引數表示式。在 c 中,變數分為以下幾種型別 值型別 value types 引用型別 reference types 指標型別 pointer types 一般上,只用到值型別和引用型別,這裡不會說到指標型別。c 的基本值型別有 ...
VB 變數 常量 運算子與表示式
一 變數的資料型別 1 整型 長整型 dim 變數名 as integer dim 變數名 as long 2 單精度 雙精度 貨幣型 dim 變數名 as single dim 變數名 as double dim 變數名 as currency 3 位元組型 dim 變數名 as byte 4 定...
1 6常量 變數 表示式
1.變數定義 變數要先宣告,再賦值 宣告 var a int 宣告 int 型別的變數 var b 10 int 宣告 int 型別陣列 var c int 宣告 int 型別的切片 var d int 宣告 int 型別的指標 賦值 a 10b 0 10 同時宣告與賦值 var a 10a 10a...