表示式樹練習實踐 變數 常量與賦值

2021-09-27 04:28:27 字數 2597 閱讀 4754

定義變數

parameterexpression 用來建立變數、變數引數表示式。

在 c# 中,變數分為以下幾種型別:

值型別(value types)

引用型別(reference types)

指標型別(pointer types)

一般上,只用到值型別和引用型別,這裡不會說到指標型別。

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」

東莞**建設www.zg886.cn

表示式樹練習實踐 變數 常量與賦值

parameterexpression用來建立變數 變數引數表示式。在 c 中,變數分為以下幾種型別 一般上,只用到值型別和引用型別,這裡不會說到指標型別。c 的基本值型別有 bool byte char double float int long等 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...