1樓:
原因有二:
第一:「每個類裡面都有一個預設的無參的建構函式」
這個是有條件的:如果你不手動新增有參的建構函式,則編譯時會自動新增一個無參建構函式,但是如果你手動新增了一個有參的建構函式,這個「預設的無參建構函式」就不會自動新增,這時候如果你還想呼叫無參的建構函式,只能手動寫一個無參的建構函式,
第二:預設的無參建構函式裡面是空的,什麼都不執行,如果你想在無參建構函式中新增一些初始化**的工作,那就必須手動寫這個無參建構函式,
2樓:匿名使用者
預設如果不提供建構函式的話,系統會自動生成一個預設的建構函式,是一個沒有引數的,但是如果提供了建構函式,系統就不會在提供預設的建構函式了。
按照net標準,總是應該提供一個沒有引數的建構函式,除非你有特別的理由不這麼做,需要強迫在物件構造時候來初始化你的物件中的某些資料,而被初始化的資料你不希望在物件初始化後被改變。
3樓:匿名使用者
作用就是做一些初始化準備。有些物件無論你有引數、沒引數都需要初始化。比如分配記憶體(c++裡面用的多),給指定變數賦初值等等。
4樓:匿名使用者
無引數的建構函式,可以使用某些特定的資料進行資料成員初始化,而不是使用系統預設的資料進行初始化.比如使用系統預設的建構函式
public class account}
5樓:
看你新加東西的型別有的有有的就沒有
c#中通過無參建構函式來呼叫有參建構函式有什麼意義啊?
6樓:匿名使用者
節省**,避免重寫一遍!
7樓:匿名使用者
1樓說得對,**重用(可以理解為過載)
一般來說,都是引數少的呼叫引數多的,最終**都寫在引數多的裡面,你現在遇到的類建構函式裡面寫的**少,等寫得多了,你就能理解了
c#有參建構函式中怎麼呼叫其無參建構函式
8樓:傻的像博士
class a
public a(int a) :this()}當a a=new a(1);
時 會先呼叫無引數的建構函式。在呼叫有引數那個
9樓:匿名使用者
好像不可以把?不過你可以通過呼叫同一個方法來實現...
c# 在main函式中怎麼呼叫無參的建構函式
10樓:匿名使用者
你這種寫法是不行的,再者,這個和建構函式沒關哈,因為你的資料是採用double.parse方法傳入的。根據你的意思,最好還是放在建構函式裡面比較好,我已經執行出來了,完整的**如下,你看看
using system;
using system.collections.generic;
using system.linq;
using system.text;
class point
public double x;
public double y;
public point()
console.writeline("please input the points' x & y:");
trythis.x = double.parse(console.readline());
catch(exception e)
this.x = 0;
trythis.y = double.parse(console.readline());
catch (exception e)
this.y = 0;
public static double calculate(double x, double y, double a, double b)
double d;
d = math.sqrt((x - a) * (x - a) + (y - b) * (y - b));
return d;
static void main(string args)
point p1 = new point();
point p2 = new point();
console.writeline("兩點距離是:" + calculate(p1.x, p1.y, p2.x, p2.y));
console.readkey();
11樓:匿名使用者
解答:可以使用double.tryparse這個函式。
p1.x = double.parse(console.readline());
p1.y = double.parse(console.readline());
p2.x = double.parse(console.readline());
p2.y = double.parse(console.readline());
改為double doubleval;
boolean result ;
result = double.tryparse(console.readline(), out doubleval);
if (result==true)
else
result = double.tryparse(console.readline(), out doubleval);
if (result==true)
else
result = double.tryparse(console.readline(), out doubleval);
if (result==true)
else
result = double.tryparse(console.readline(), out doubleval);
if (result==true)
else
12樓:
public point()
13樓:匿名使用者
public point()
只有該這裡即可
14樓:冒晟睿寸駿
class
a()}
intmain()
這種基本的問題網上搜下很多
15樓:邱之槐巨洲
class
apublic
a(int
a):this()}當a
a=new
a(1);
時會先呼叫無引數的建構函式。在呼叫有引數那個
c#在main函式中怎麼呼叫無參的建構函式
16樓:楊逝軒
class a()
}int main()
這種基本的問題網上搜下很多
c 中的拷貝建構函式的問題,c 拷貝建構函式的問題
拷貝建構函式多被用來實現類物件的深拷貝。例如 class a 不定義拷貝建構函式時,你如果對兩個物件賦值,就會是淺拷貝,即 簡單的成員變數相等。a a,b a b 則,相當於作了a.p b.p,a,b的p指標指向了同一個地址,但是資料並沒有拷貝一份,這叫做淺拷貝。所以定義拷貝建構函式 a a a 然...
C 中函式引數問題,C 模板中函式引數問題
void visit bintreenode t 用左 右 左讀法 1 visit 往左讀,是 於是 visit 是指標2 再接著往右讀,是 3 再往左,是 4 再往右是 bintreenode t 括號中有變數宣告,是函式引數定義 5 再往左讀,是 void,函式返回值 所以,visit 是一個指...
函式形參列表,c 函式形參列表中 account 是什麼意思 為什麼 在後面
void fn int a1,int a2 這裡 變數名 不能為a1或a2,即不能與形參列表中的名字同名。在excel中常用函式的引數有哪些?選單 插入 函式 你可以檢視常用函式。如下圖所示 c語言自定義函式中引數列表前定義變數型別有什麼用 首先你要明白不抄同的型別之間不bai能直接進行運算的.如果...