一、輸入及輸出
輸入:
System命名空間中的Console類提供獲取輸入的函數(shù)ReadLine()罚斗,但是Console.ReadLine只接受字符串格式的數(shù)據(jù)针姿,如果想輸入其他數(shù)據(jù)厌衙,可以在前面加一個(gè)類型轉(zhuǎn)換。
輸出:
輸出可以使用Console.Write(s)表示輸出s但不換行榕暇,如果需要換行可以使用Console.WriteLine(s)
WriteLine中若有多個(gè)字符同時(shí)輸出需要在前面用占位符{0}{1}{2}…彤枢,分別表示第一個(gè)筒饰、第二個(gè)、第三個(gè)字符…
using System;
namespace WriteApplication
{
class WriteTest
{
//主函數(shù)
static void Main(string[] args)
{
string s1;
string s2;
int i;
s1 = Console.ReadLine();
s2 = Console.ReadLine();
i = Convert.ToInt32(Console.ReadLine());
int t;
t = i + 3;
Console.Write(s1);
Console.WriteLine(t);
Console.WriteLine("s1={0},s2={1},I love {0}.", s1, s2);
Console.ReadKey();
}
}
}
輸入:
test
sleep
2
代碼輸出結(jié)果:
test5
s1=test,s2=sleep,I love test.
二业栅、C#文件的輸入與輸出
System.IO命名空間中的FileStream類用于文件的讀寫和關(guān)閉。我們可以通過創(chuàng)建一個(gè)FileStream對(duì)象來創(chuàng)建或打開一個(gè)文件携取,創(chuàng)建的語(yǔ)法為:FileStream <object_name> = new FileStream( <file_path>, <FileMode Enumerator>, <FileAccess Enumerator>, <FileShare Enumerator> )
FileMode定義了各種文件的打開方式:
- Append:打開一個(gè)已有的文件雷滋,光標(biāo)放置文件結(jié)尾你弦。如果文件不存在,則創(chuàng)建文件。
- Create:創(chuàng)建一個(gè)新的文件旷偿,若文件已存在爆侣,則刪除原來的文件,然后創(chuàng)建一個(gè)新的茫负。
- CreateNew:指定操作系統(tǒng)創(chuàng)建一個(gè)新的文件乎赴,若文件存在榕吼,則拋出異常。
- Open:打開一個(gè)已有的文件原探,若文件不存在顽素,則拋出異常。
- OpenOrCreate:指定操作系統(tǒng)打開一個(gè)已有的文件型型,若文件不存在划鸽,則用指定的名稱創(chuàng)建一個(gè)新的文件并打開。
-
Truncate:打開一個(gè)已有的文件嫂用,并向其中寫入全新的數(shù)據(jù)(抹去原來的內(nèi)容),但保留文件的初始創(chuàng)建日期甘畅。若文件不存在疏唾,則拋出異常函似。
FileAccess中包含:Read,ReadWrite和Write
FileShare中包含: - Inheritable:允許文件句柄可由子進(jìn)程繼承
- None:拒絕共享當(dāng)前文件顿天,即文件關(guān)閉前牌废,其他任何進(jìn)程不得使用該文件
- Read:允許隨后打開的文件讀取
- ReadWrite:允許隨后打開的文件讀取或?qū)懭?/li>
- Write:允許隨后打開的文件寫入
-
Delete:允許隨后刪除文件
常用的功能方法: - Read(data, Int32, Int32):讀取流中指定區(qū)間的數(shù)據(jù)啤握,并寫入data中
- Write(data, Int32, Int32):從data中將指定區(qū)間的數(shù)據(jù)并寫入流中
- Close():關(guān)閉當(dāng)前流并釋放于當(dāng)前流關(guān)聯(lián)的任何資源
- Dispose():釋放流所有的資源
-
Seek(Int64, SeekOrigin):將此流的當(dāng)前位置設(shè)定為定值排抬,其中SeekOrigin有3個(gè)值:Begin,Current和End
File.Seek(8, SeekOrigin.Begin)表示將文件的指針移動(dòng)到第8個(gè)字節(jié)
File.Seek(-5, SeekOrigin.End)表示將文件的指針移動(dòng)到文件倒數(shù)第5個(gè)字節(jié)
三莫绣、訪問修飾符
C#中封裝需要通過訪問修飾符來設(shè)置使用者的訪問權(quán)限对室,訪問修飾符包括:
- public:所有對(duì)象都可以訪問
- private:在對(duì)象內(nèi)部可以訪問
- protected:該類對(duì)象及其子類對(duì)象可以訪問
- internal:同一程序集的對(duì)象可以訪問
- protected internal:本類掩宜、派生類或同一程序集可以訪問
四么翰、方法
- 在參數(shù)傳遞的默認(rèn)方式下,調(diào)用一個(gè)方法時(shí)檐迟,會(huì)為每個(gè)值參數(shù)創(chuàng)建一個(gè)新的存儲(chǔ)位置补胚,實(shí)際的參數(shù)值會(huì)復(fù)制給形參溶其,使用的是兩個(gè)不同內(nèi)存中的值敦间。因此當(dāng)形參發(fā)生改變時(shí)不會(huì)影響實(shí)參的值廓块。
- 在使用引用傳遞參數(shù)時(shí),不會(huì)為參數(shù)創(chuàng)建一個(gè)新的存儲(chǔ)位置带猴。在C#中使用ref關(guān)鍵字聲明引用參數(shù)浓利。
using System;
using System.IO;
namespace WriteApplication
{
class WriteTest
{
public void swap1(int x, int y)
{
int temp;
temp = x;
x = y;
y =temp;
}
public void swap2(ref int x, ref int y)
{
int temp;
temp = x;
x = y;
y =temp;
}
//主函數(shù)
static void Main(string[] args)
{
WriteTest n = new WriteTest();
int a = 100;
int b = 200;
Console.WriteLine("交換前a:{0}",a);
Console.WriteLine("交換前b:{0}",b);
n.swap1(a,b);
Console.WriteLine("使用參數(shù)傳遞后a:{0}",a);
Console.WriteLine("使用參數(shù)傳遞后b:{0}",b);
a = 100;
b = 200;
n.swap2(ref a, ref b);
Console.WriteLine("使用引用參數(shù)傳遞后a:{0}",a);
Console.WriteLine("使用引用參數(shù)傳遞后b:{0}",b);
Console.ReadLine();
}
}
}
代碼運(yùn)行結(jié)果:
交換前a:100
交換前b:200
使用參數(shù)傳遞后a:100
使用參數(shù)傳遞后b:200
使用引用參數(shù)傳遞后a:200
使用引用參數(shù)傳遞后b:100
輸出參數(shù)可以從函數(shù)中返回多值贷掖,將數(shù)據(jù)賦予自己苹威。由于提供給輸出參數(shù)的變量不需要賦值驾凶,因此從一個(gè)沒有初始值的方法中返回值,輸出參數(shù)特別有用
using System;
using System.IO;
namespace WriteApplication
{
class WriteTest
{
public void define_values(out int x, out int y)
{
x = 10;
y =20;
}
//主函數(shù)
static void Main(string[] args)
{
WriteTest n = new WriteTest();
int a, b; //沒有賦值
n.define_values(out a, out b);
Console.WriteLine(a);
Console.WriteLine(b);
Console.ReadLine();
}
}
}
代碼輸出結(jié)果:
10
20