Csharp+Asp.net系列教程(四)

邁克老貓
來自:老貓的理想

本教程參考C#和ASP.NET程序設計教程撰寫,有什么不足之處請大家指出,或在老貓的理想BLOG留言。

這次簡述一下操作符
???? 1.算術操作符
???? ????????算術操作符包括加(+)、減(-)、乘(*)、除(/)和求余(%)。加減操作符除了用于整數和實數的加減運算外,還適用于枚舉類型、字符串類型和委托類型,這是通過操作符重栽實現的。
???? ????????string mf1="Mike";
????????????string mf2="Cat";
????????????string mf3=mf1+mf2;//mf3="MikeCat"
????????
????????????using System;
????????????enum Weekday
????????????{
????????????????Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday
????????????};
????????????class MikeCat
????????????{
????????????????static void Main()
????????????????{
????????????????????Weekday mf1=Weekday.Sunday;
????????????????????Weekday mf2=mf1+3;
????????????????????Console.WriteLine("mf1={0},mf2={1}",mf1,mf2);
????????????????}
????????????}//結果:mf1=Sunday,mf2=Wednesday
????????2.賦值操作符
????????????賦值就是給一個變量賦一個新值。c#中分簡單賦值和復合賦值兩類。
????????????????簡單賦值:"=" a=b=c 等價于 a=(b=c)
????????????????復合賦值:"+=" "-=" "*=" "/=" "%=" "|=" "^=" "<<=" ">>=" a+=10 等價于a=a+10
????????3.比較操作符
????????????比較操作符用來比較兩個表達式的大小,如大于(>) < == != <= >= 。
????????4.邏輯操作符
????????????邏輯與(&&) 邏輯或(||) 和 邏輯非(!)
????????5.位操作符是對數據按二進制位進行運算的操作符。c#位操作符包括按位與(&) | ~ << >>
????????????????using System;
????????????????class MikeCat
????????????????{
????????????????????public static void Main()
????????????????????{
????????????????????????int a=6&3;
????????????????????????Console.WriteLine("a={0}",a);
????????????????????????//6的二進制是00000110,3的二進制是00000011,按位與后等于00000010,即2
????????????????????????int b=6|3;
????????????????????????Console.WriteLine("b={0}",b);
????????????????????????//6的二進制是00000110,3的二進制是00000011,按位或后等于00000111,即7
????????????????????????int c=~6;
????????????????????????Console.WriteLine("c={0}",c);
????????????????????????//6的二進制是00000110,按位取反后是11111001即-7
????????????????????????int d=6^3;
????????????????????????Console.WriteLine("d={0}",d);
????????????????????????//6的二進制是00000110,3的二進制是00000011,按位異或后等于00000101,即5
????????????????????????int e=6<<3;
????????????????????????Console.WriteLine("e={0}",e);
????????????????????????//6的二進制是00000110,左移三位后等于00101000,即48
????????????????????????int f=6>>2;
????????????????????????Console.WriteLine("f={0}",f);
????????????????????????//6的二進制是00000110,右移二位等于00000001,即1
????????????????????}
????????????????}
????????6.is操作符
????????????is操作符用于檢查運行時對象類型是否和給定的類型兼容。表達式"e is T"中的e是一個表達式,T是一個類型。返回值是一個布爾值。
????????????如果滿足下列兩個條件,則 is 表達式計算為 true 值:
????????????????expression 非 null。
????????????????expression 可以被轉換為 type。也就是說,將完成形式 (type)(expression) 的轉換表達式而不引發異常。
????????????示例
????????????????// cs_keyword_is.cs
????????????????// The is operator
????????????????using System;
????????????????class Class1
????????????????{
????????????????}
????????????????class Class2
????????????????{
????????????????}
????????????????public class IsTest
????????????????{
???????????????? public static void Test (object o)
???????????????? {
???????????????? Class1 a;
???????????????? Class2 b;
???????????????? if (o is Class1)
???????????????? {
???????????????? Console.WriteLine ("o is Class1");
???????????????? a = (Class1)o;
???????????????? // do something with a
???????????????? }????????
???????????????? else if (o is Class2)
???????????????? {
???????????????? Console.WriteLine ("o is Class2");
???????????????? b = (Class2)o;
???????????????? // do something with b
???????????????? }
???????????????? else
???????????????? {
???????????????? Console.WriteLine ("o is neither Class1 nor Class2.");
???????????????? }
???????????????? }
???????????????? public static void Main()
???????????????? {
???????????????? Class1 c1 = new Class1();
???????????????? Class2 c2 = new Class2();
???????????????? Test (c1);
???????????????? Test (c2);
???????????????? Test ("a string");
???????????????? }
????????????????}
????????????????輸出
????????????????o is Class1
????????????????o is Class2
????????????????o is neither Class1 nor Class2.
????????7.三元操作符
????????????三元操作符(?:)也稱條件操作符。對條件表達式"b?x:y",總是先計算條件b,然后進行判斷。如果b的值為true,則計算x的值,否則計算y的值。條件運算符為右聯運算符,因此該形式的表達式 a ? b : c ? d : e 按如下規則計算:a ? b : (c ? d : e)
????????8. . 運算符
????????????點運算符用于成員訪問。name1 . name2
????????????????????class Simple
????????????????????{
???????????????????? public int a;
???????????????????? public void b()
???????????????????? {
???????????????????? }
????????????????????}
????????????????????Simple s = new Simple();
????????????????????變量 s 有兩個成員 a 和 b;若要訪問這兩個成員,請使用點運算符
????????????????????s.a = 6; // assign to field a;
????????????????????s.b(); // invoke member function b;

9.[] 運算符
????????????方括號 ([]) 用于數組、索引器和屬性,也可用于指針。
????????????type [] array [ indexexpr ]
????????????其中: type 類型。 array 數組。 indexexpr 索引表達式
????????10.() 運算符
????????????除了用于指定表達式中運算符的順序外,圓括號還用于指定轉換(類型轉換)
????????????( type ) expr????其中:type ????expr 要轉換為的類型名。 expr ????一個表達式。轉換顯式調用從 expr 類型到 type 類型的轉換運算符;如果未定義這樣的轉換運算符,則該轉換將失敗。
????????12.自增自減操作符
????????????自增操作符++對變量的值加1,而自減操作符--對變量的值減1。此操作符有前后綴之分。對于前綴操作符,遵循的原則是“先增減,后使用”,而后綴操作符則正好相反,是“先使用,后增減”
????????????using System;
????????????class MikeCat
????????????{
????????????????public static void Main()
????????????????{
????????????????????double x,y;
????????????????????x=1.5;
????????????????????Console.WriteLine(++x);//自增后等于2.5
????????????????????y=1.5;
????????????????????Console.WriteLine(y++);//先顯示1.5后自增
????????????????????Console.WriteLine(y);//自增后等于2.5
????????????????}
????????????}
????????13.as 運算符
????????????as 運算符用于執行可兼容類型之間的轉換。as 運算符用在以下形式的表達式中:expression as type????其中: expression ????引用類型的表達式。type????引用類型。
????????????as 運算符類似于類型轉換,所不同的是,當轉換失敗時,as 運算符將產生空,而不是引發異常。在形式上,這種形式的表達式:
????????????expression as type????等效于:
????????????expression is type ? (type)expression : (type)null
????????????只是 expression 只被計算一次。
????????????請注意,as 運算符只執行引用轉換和裝箱轉換。as 運算符無法執行其他轉換,如用戶定義的轉換,這類轉換應使用 cast 表達式來代替其執行。
????????????using System;
????????????class MyClass1
????????????{
????????????}
????????????class MyClass2
????????????{
????????????}
????????????public class IsTest
????????????{
???????????? public static void Main()
???????????? {
???????????? object [] myObjects = new object[6];
???????????? myObjects[0] = new MyClass1();
???????????? myObjects[1] = new MyClass2();
???????????? myObjects[2] = "hello";
???????????? myObjects[3] = 123;
???????????? myObjects[4] = 123.4;
???????????? myObjects[5] = null;
???????????? for (int i=0; i???????????? {
???????????? string s = myObjects[i] as string;
???????????? Console.Write ("{0}:", i);
???????????? if (s != null)
???????????? Console.WriteLine ( "'" + s + "'" );
???????????? else
???????????? Console.WriteLine ( "not a string" );
???????????? }
???????????? }
????????????}
????????????輸出
????????????0:not a string
????????????1:not a string
????????????2:'hello'
????????????3:not a string
????????????4:not a string
????????????5:not a string
????????14.new 操作符
????????????????new操作符用于創建一個新的類型實例,有三種形式:
????????????????A:對象創建表達式,用于創建一個類類型或值類型的實例。
????????????????B:數組創建表達式,用于創建一個數組類型實例。
????????????????C:委托創建表達式,用于創建一個新的委托類型實例。
????????15.typeof操作符
????????????????typeof操作符用于獲得系統原型對象的類型。
????????????????using System;
????????????????class MikeCat
????????????????{
????????????????????public static void Main()
????????????????????{
????????????????????????Console.WriteLine(typeof(int));
????????????????????????Console.WriteLine(typeof(System.Int32));
????????????????????}
????????????????}//結果:System.Int32 System.Int32
????????????????//表明int和System.Int32是同一個類型
????????????c#中用GetType()方法獲得一個表達式在運行時的類型
????????????????????using System;
????????????????????class MikeCat
????????????????????{
????????????????????????public static void Main()
????????????????????????{
????????????????????????????int r=3;
????????????????????????????Console.WriteLine("圓的面積等于{0}",r*r*Math.PI);
????????????????????????????Console.WriteLine("類型是{0}",(r*r*Math.PI).GetType());
????????????????????????}
????????????????????}//圓的面積等于28.2743338823081
????????????????????//類型是System.Double
????????16.sizeof操作符
????????????????sizeof操作符獲得一個值類型的字節大小
????????????????????????using System;
????????????????????????class MikeCat
????????????????????????{
????????????????????????????unsafe public static void SizesOf()
????????????????????????????{
????????????????????????????????Console.WriteLine("short的大小是{0}",sizeof(short));
????????????????????????????????Console.WriteLine("int的大小是{0}",sizeof(int));
????????????????????????????????Console.WriteLine("long的大小是{0}",sizeof(long));
????????????????????????????}
????????????????????????????public static void Main()
????????????????????????????{
????????????????????????????????SizesOf();
????????????????????????????}
????????????????????????}//short 的大小是2;int的大小是4;long的大小是8;
????????17.checked和unchecked操作符
????????????在進行整型算術運算或從一種整型顯示轉換到另外一種整型時,有可能產生溢出。
????????????檢查這種溢出c#中有兩種處理方式:
????????????第一:在編譯時設置溢出校驗選項(溢出校驗默認是禁用的):
????????????????csc /checked test.cs //這個我們在前面有所介紹
????????????第二:使用checked和unchecked操作符來確定是否進行溢出校驗。即使編譯時禁用溢出校驗,計算時也同樣引發異常。
????????????????using System;
????????????????class MikeCat
????????????????{
????????????????????public static void Main(string[] args)
????????????????????{
????????????????????????long factorial=1;
????????????????????????long num=Int64.Parse(args[0]);
????????????????????????for(long cur=1;cur<=num;cur++)
????????????????????????????{
????????????????????????????????checked{factorial*=cur;}
????????????????????????????}
????????????????????????????Console.WriteLine("{0}的階乘是{1}",num,factorial);
????????????????????}
????????????????}//test.exe 3 3的階乘是6
????????unchecked操作符與checked操作符正好相反,即使溢出,被unchecked操作符所括住的代碼也不會引發異常。
????????各個操作符的優先級我就不在這里多說了。主要是手累。呵呵。仍然和以前c++的優先級相似。詳細可參看MSDN。感謝大家關注本教程,歡迎訪問老貓的理想BLOG

轉載于:https://www.cnblogs.com/mikecat888/archive/2004/12/18/78639.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277350.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277350.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277350.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux 腳本 寫更新,用Shell寫的游戲客戶端更新腳本

#!/bin/sh########################################### 客戶端版本更新系統########################################### CLIENT_INIT_VERSION 客戶端新版本&#xff0c;默認是0# CLIENT_OLD_VERSION 客戶端舊版本(存放在VERSION_FILE指定的文件中)&#xff0c;當沒有時取CL…

Android Studio 環境搭建參考,jdk10javac命令提示不是內部或外部命令

https://blog.csdn.net/qq_33658730/article/details/78547789 win10下Android Studio和SDK下載、安裝和環境變量配置 http://yanmin99.com/ android-0基礎從入門到精通 環境變量ANDROID_HOMEE:\Program Files (x86)\Android\SdkJAVA_HOMEE:\Program Files\Java\jdk1.8.0_161TO…

報表引擎 - 數據模型

介紹 本文檔是報表模型的數據模型部分&#xff0c;說明平臺報表中涉及的報表數據相關 術語 名稱 說明 數據源 數據源是與數據存儲的連接。支持數據源適配 數據集 定義報表數據來源的一個二維表 參數 報表往往有參數&#xff0c;例如&#xff0c;日報表&#xff0c;當…

linux 刪舊內核,Ubuntu 刪除舊內核的方法

使用Ubuntu時如果系統里安裝了很多內核&#xff0c;會造成多于的啟動列表。想刪掉一些不用的內核方法如下方法一&#xff1a;首先就是使用如下命令&#xff0c;列出所有安裝的內核&#xff0c;下表中&#xff0c;帶有p_w_picpath的就是內核文件。從中選擇要卸載的包&#xff0c…

L2-014 列車調度(隊列模擬:set)

題意&#xff1a; 兩端分別是一條入口&#xff08;Entrance&#xff09;軌道和一條出口&#xff08;Exit&#xff09;軌道&#xff0c;它們之間有N條平行的軌道。每趟列車從入口可以選擇任意一條軌道進入&#xff0c;最后從出口離開。在圖中有9趟列車&#xff0c;在入口處按照{…

新架設了一個CVS服務器 --by yp

cvs是個代碼管理的好東東&#xff0c;全稱并發版本控制。不知道的上網查一下資料。 我下載了相關的部分資料和軟件&#xff0c;包括架設服務器的軟件和使用服務的客戶端軟件&#xff0c;都是windows平臺下可用的&#xff0c; 其他平臺下的我都沒下載&#xff0c;因為不會用。在…

@hdu - 6372@ sacul

目錄 descriptionsolutionaccepted codedetailsdescription 定義矩陣 \(A_i\) 是一個大小為 \(p^i*p^i\) 的矩陣&#xff0c;其中 \(p\) 是第 \(c\) 個素數&#xff08;c 給定&#xff09;&#xff0c;且 \(A_i[x][y] [C(x, y) \mod p > 0]\)&#xff08;其中 C(x, y) 是組…

實驗室里人越來越少啊!

研二下半學期了。研三的師哥師姐們都忙著找工作&#xff0c;有的已經去工作了。只是偶而來實驗室轉轉。研一的師弟師妹&#xff0c;現在還都有課&#xff0c;實驗室也沒他們的機器&#xff0c;所以幾乎不來實驗室。我們研二的有四個人&#xff0c;兩個北京的。其中一個在外面打…

在一臺機器上搭建多個redis實例

默認Redis程序安裝在/usr/local/redis目錄下&#xff1b; 配置文件&#xff1a;/usr/local/redis/redis.conf&#xff0c;該配置文件中配置的端口為默認端口&#xff1a;6379&#xff1b; Redis的啟動命令路徑&#xff1a;/usr/local/bin/redis-server。 可以指定端口啟動多個R…

2年前 影子

1. 請問您知道 xxxx嗎 ? 麻煩了您? 2. 您在公司待了多長時間了&#xff1f; 3. 您覺得公司怎么樣&#xff1f; 。。。。。。 待續&#xff01; 轉載于:https://www.cnblogs.com/nucdy/p/11151470.html

linux是只讀添加 來覆蓋,Linux之指令 重定向 文件覆蓋和文件追加

CXF支持 SOAP1&period;1 SOAP1&period;2協議SOAP協議分為兩個版本 1.1 1.2 默認支持1.1 實現方式: 1.編寫接口 import javax.jws.WebService; WebService public inte ...USACO Section 2&period;4&colon; Bessie Come Home因為題目給了邊的信息,所以比較…

分層架構web容器的配置安全

轉自&#xff1a;http://hi.baidu.com/shineo__o/item/7520d54c24d234c71081da82 /ps:本以為這是一個偶然配置失誤造成的問題&#xff0c;但最近幾天無聊時測試發現&#xff0c;有此類似問題的站點就有上百個&#xff0c;所以在這里粗糙總結一下&#xff01; 通常我們會碰到這樣…

Jenkins-Gitlab配置方法

1&#xff09;本機首先安裝好git軟件2&#xff09;然后安裝gitlab插件,在可選插件中查找gitlab,點擊直接安裝3&#xff09;然后進入系統管理-系統設置 首先進入Gitlab中復制需要的 token 值在 Profile Settings - Account把復制的值&#xff0c;復制到新增頁面中轉載于:https:…

高速緩沖存儲器的功能、結構與工作原理

2.3 高速緩沖存儲器&#xff08;Cache&#xff09; 2.3.1 高速緩沖存儲器的功能、結構與工作原理   高速緩沖存儲器是存在于主存與CPU之間的一級存儲器&#xff0c; 由靜態存儲芯片(SRAM)組成&#xff0c;容量比較小但速度比主存高得多&#xff0c; 接近于CPU的速度。 Cache…

洛谷 P1417 烹調方案 (01背包拓展)

一看到這道題就是01背包 但是我注意到價值和當前的時間有關。 沒有想太多&#xff0c;直接寫&#xff0c;0分 然后發現輸入方式不對…… 改了之后只有25分 我知道wa是因為時間會影響價值&#xff0c;但不知道怎么做。 后來看了題解&#xff0c;發現我對01背包理解不夠透徹普通0…

LeetCode 77.組合求和

給定一個無重復元素的數組 candidates 和一個目標數 target &#xff0c;找出 candidates 中所有可以使數字和為 target 的組合。 candidates 中的數字可以無限制重復被選取。 說明&#xff1a; 所有數字&#xff08;包括 target&#xff09;都是正整數。解集不能包含重復的組合…

18函數對象19command模式20函數對象在STL中的應用

Item 18. Function ObjectsItem 19. Commands and HollywoodItem 20. STL Function Objects1、unction Objects是什么函數對象聽起來挺嚇人&#xff0c;其實并不神秘&#xff0c;它也是一個類的對象&#xff0c;只不過該類重載了操作符(),使得對象使用以來跟函數一樣。class Fi…

linux df命令功能,Linux df命令簡要介紹

日常工作生活中&#xff0c;我們常需要查看系統當前的磁盤空間使用情況。在windows下&#xff0c;只需簡單點擊我的電腦&#xff0c;就看到帶進度條的系統磁盤使用情況&#xff0c;非常直觀。那linux命令行下如何實現同樣的功能呢&#xff1f;這就是我們今天要介紹的df命令。df…

spring集成RabbitMQ配置文件詳解(生產者和消費者)

1&#xff0c;首先引入配置文件org.springframework.amqp&#xff0c;如下&#xff1a; <dependency><groupId>org.springframework.amqp</groupId><artifactId>spring-rabbit</artifactId><version>1.7.1.RELEASE</version></de…

一天的學習成果:hash輸出,dcache工作原理,include的home directory,fist optype的含義...

最先獲得突破的是解決了下午的崩潰問題。其實原因很簡單&#xff0c;我聲明了一個unsigned int型指針&#xff0c;但是沒有給它分配空間…… 解決了這個問題之后就很簡單了&#xff0c;調用定義在linux/dcache.c文件中的full_name_hash函數對文件名進行hash計算。這里發現了一個…