目前分類:程式教學 (24)

瀏覽方式: 標題列表 簡短摘要

 

C#要如何引用Web.Config的 connectionString?

 

    在做ASP.NET網頁設計時常常會需要用到connectionString,需要用到connectionString時比較好的做法是去引用Web.configconnectionString,今天就來教大家ASP.NET使用C#程式要如何引用Web.configconnectionString

 

    首先在Web.config檔案裏面加入下面這串程式,這裡要注意MVCWeb.config2個,這裡不是改在View資料夾裡面的Web.config,是要改不在資料夾內的那個Web.config。在View資料夾裡面的Web.config只有View會用到而已,而直接放在專案下面的Web.config大家都能用到,我想這個應該也滿好理解的。

 

<connectionStrings>

   <add name="connstring" connectionString="Persist Security Info=False; Integrated Security=true;  Initial Catalog=你的資料表名稱; Server=你的資料庫路徑; User ID=帳號;Password=密碼"     providerName="System.Data.SqlClient"/>

</connectionStrings>

 

    這邊其實如果有設定Integrated Security=true的話SQL Sever就可以用Windows驗證不需要帳號密碼,這樣的話User IDPassword2個是可以刪掉不用輸入的。

 

然後在C#的程式中,先引用System.Data.SqlClient,程式如下:

using System.Data.SqlClient;

 

然後輸入下面的程式:

 

private readonly string cnstr = System.Web.Configuration.WebConfigurationManager.

ConnectionStrings["connstring"].ConnectionString;

 

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

泡沫排序法使用方法的程式語法

 

    上次我跟大家介紹過怎麼用C#寫泡沫排序法,今天在跟大家一樣講C#寫泡沫排序法,但是有使用方法,這樣的寫法會比較好一點,感覺比較有水準,程式如下:

 

        static void Main(string[] args)
        {
            int[] array = { 1, 12, 5, 9, 6, 8 };
            array = sortarray(array);
            printNumber(array);
        }
        static int[] sortarray(int[] a) //泡沫排序方法
        {
            int i, j, temp;
            for(i=0;i<=a.GetUpperBound(0);i++)
            {
                for (j = i; j <= a.GetUpperBound(0); j++)
                {
                    if (a[i] > a[j])
                    {
                        temp = a[i];

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

[C#]泛型(Generics)

 

泛型的意思是「暫時替代型別的置換符號」,讓程式設計師暫時不需要決定型別,就可以完成類別或方法的設計。比如成績的這個類別,有可能是等第ABC,也有可能是分數,在宣告成績這個類別時給他一個符號T,不直接給定這是string還是int的資料型別。

 

簡單的程式範例如下:

public class Grade<T>

    {      

        private T  grade;

        public T  getGrade()

        {

            return grade;

        }

 

        public void setGrade(T data)

        {

            grade = data;

        }

    }

    class Program

    {

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

事件(Event)

 

   上次介紹了委派delegate,委派常常會和事件event一起使用, 事件event指的是使用者所做的動作,例如鍵盤輸入、滑鼠點擊等。

   其實事件有點像是訂閱的概念,在事件發生的時候,會通知訂閱者,然後訂閱者就會有動作,也就是執行方法。

   用程式說明大家可能會比較清楚。

 

下面我用一個見面跟人打招呼的程式做為範例,來向大家介紹甚麼是事件?

範例程式如下:

public delegate void PersonEventHandler(object source, PersonEventArgs args);

 

    public class Person

    {

        private string PerName, PerNation;

        public event PersonEventHandler PerEvent;

 

             public void Add(string name,string nation)

        {

            PerName = name;

            PerNation = nation;

 

文章標籤

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

程式初學者必學的泡沫排序法使用C#

 

    泡沫排序法是程式設計初學這必學的程式,使用泡沫排序法可以把一串數字按照順序來排列,過去我面試的時候也常常有遇到很多公司會考泡沫排序法,這是一個很簡單也很重要的考題,以下我就使用C#來撰寫泡沫排序法:

 

        static void Main(string[] args)
        {
            int[] Data = new int[5] { 12, 5, 8, 6, 2};

            int  temp;
            for(int i=0;i<5;i++)
                for(int j=i+1;j<5;j++)
                {
                    if(Data[i]>Data[j])
                    {
                        temp = Data[i];
                        Data[i] = Data[j];
                        Data[j] = temp;
                    }
                }
        
            foreach(int x in Data)

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

多型Polymorphism在物件導向程式語言的意思是一件事物有多種不同樣貌,就好像面積的計算會因為不同形狀有不同算法,三角形是底乘以高除以2,長方形是長乘以寬。有關於多型的觀念可以看看下面這篇文章:

多型Polymorphism

 

下面我將使用物件導向的抽象Abstract和介面Interface搭配多型Polymorphism來實作面積計算,使用的程式為C#。抽象的意思是對於要描述的東西找到共通必要的元素,介面則是像日常生活中不同的電腦產品,有相同的規格,像是USB。有關於抽象和介面的觀念介紹可以看一下這2篇文章:

抽象Abstract

介面Interface

 

 

使用抽象Abstract實作面積計算

public abstract class Shape

    {

        public abstract int Area(int x,int y);

    }

    public class Square:Shape

    {

        public override int Area(int x, int y)

        {

            return x * y;

        }

    }

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

存取子(accessors) get & set

 

    存取子(accessors) get & set在程式設計中很常用到,可以用來對特定的數值做一些處理。其中get的意思相當於「提供」,而set的意思相當於「設定」。

    下面我寫一個程式,設定學生的成績,當學生的成績小於60分時自動加到60分,這時候就可以運用存取子(accessors) get & set,程式語法如下:

 

class Student

    {

        private int grade;

      

        public int Grade

        {

            get

            {

                return grade;

            }

            set

            {

                if (value < 60) { grade= 60; }

                else { grade=value; }

            }

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

用遞迴函式撰寫費式(Fibonacci)數列使用C#

 

    費式數列的特性式是後面的數字等於前面2個數字的加總,在學習程式語言的遞迴函式時,費式數列是一個很好的題目。用遞迴函式撰寫費式數列並不難,使用C#來撰寫費式數列,輸入要列出費式數列到第幾項的程式如下:

 

 

        static void Main(string[] args)
        {
            Console.WriteLine("請輸入一個數字:");
            string max = Console.ReadLine();
            int range = 0;
            int.TryParse(max, out range);            

            for(int i=1;i<=range;i++)
            Console.Write(Fibo(i)+"\t");           
        }

        private static int Fibo(int n)
        {
            if (n <= 0)
                return -1;
            else if (n == 1 || n == 2)
                return 1;

文章標籤

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

C#主控台應用程式引用app.config參數

 

   用C#寫主控台應用程式是沒有web.config的,這時候如果要使用可以自行修改的參數和引用連線字串,那就要使用app.config。

   首先要先在專案中新增項目,在新增項目中選取一般>>應用程式組態檔來新增app.config。

02.PNG

 

    要從app.config引用連線字串,在NuGet套件就要安裝System.Configuration.Manager如下圖:

01.PNG

 

    然後在app.config裡面撰寫的內容如下

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <connectionStrings>
        <add name="myDB" connectionString="Data source = 填入MSSQL Server路徑; initial catalog = 填入資料庫名稱; User ID=使用者名稱;Password=密碼 " providerName="System.Data.SqlClient" />
    </connectionStrings>
    <appSettings>
        <add key="displayText" value="成功連線" />
    </appSettings>
</configuration>

 

 

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

在程式中善用using自動釋放資源,而不需手動關閉

 

 

    上次跟大家介紹在ASP.NET中如何引用Web.Config裡面的連線字串,大家可以看這篇文章:

ASP.NET 使用C#引用Web.Config的 connectionString教學

    請大家先看完我的上一篇文章以後再來看我這篇文章,延續上一篇我所寫的程式,上次我在程式的最後面加上 cmd.Dispose()和conn.Close()來釋放資源,這個動作其實在C#中是可以自動化執行的,只要你使用using就可以了,在SqlConnection和SqlCommand做實例化的地方使用using,在程式執行完以後就會自動關閉釋放資源,上次資料庫的程式就改成像下面這樣:

 

          string sql = @"Select * from Guestbooks" //這裡輸入要執行的TSQL

           using(SqlConnection conn = new SqlConnection(cnstr))

           {

            conn.Open();

            using(SqlCommand cmd = new SqlCommand(sql, conn))

            {

            SqlDataReader dr = cmd.ExecuteReader();

 

  .

  .

  .

     }

            cmd.Dispose();

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

簡易洗牌程式使用C#

 

    上次為大家介紹了簡單的洗牌程式,上次使用VB程式,這次跟大家介紹如果使用C#程式的寫法,我所使用的洗牌邏輯和上次相同,任一張牌和任一張牌做交換,重複做就可以達到洗牌的效果了,程式如下:

 

    class Program

 {

        static void Main(string[] args)

   {

            int i, a, b, temp;

            int []numbers=new int[20] ;

           

                            //把宣告的陣列按順序設定數字

                             for (i=0 ; i< numbers.Length; i++)

            {

                numbers[i] = i+1;

                Console.Write(numbers[i]+"\t");

            }

 

            Console.WriteLine();

            Console.WriteLine("---------------------------------");

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

推薦程式設計C#和ASP.NET MVC相關的幾本好書    

 

        現在程式設計師這個工作滿缺人的,學好程式設計是不必擔心會沒工作,我學程式設計的方式是看書自己學習居多,也有上網看一些程式教學網站,最習慣的學習方式還是看書,推薦大家我讀過的幾本與C#和ASP.NET MVC有關的好書,這幾本書好好讀的話應該能增進不少程式功力。

 

從0開始C#2017

從零開始! Microsoft Visual C# 2017 程式設計入門 
作者:洪國勝
出版社:旗標
出版日期:2017/07
建議售價:650 元

這本書的內容很豐富,從最基本的開始教,到後面比較深入,有介紹一點點資料庫和網路應用程式,並且最後一章有幾個有趣的專題範例程式,看完這一本基本上C#的基本觀念都已經有學過了。不過提醒大家一點,現在Visual C#已經出2019的版本了,所以想要學C#的人其實也可以買Visual C# 2019的書學習,不過我有用過Visual C# 2017和2019,這2個版本因為也才差2年,所以差別並沒有那麼大,因此這本書還是值得看。

 

 

跟著實務學習ASP.NET MVC

跟著實務學習ASP.NET MVC-第一次寫MVC就上手(適用C#2017/2015) 
作者: 蔡文龍, 蔡捷雲, 歐志信, 曾芷琳, 萬鴻曜
出版社:碁峰
出版日期:2018/01/19
定價:520元

十分推薦想要學MVC的新手讀這本書,這本書的內容很淺,是一本初階的MVC教學書。想要快速學習MVC的人可以買這本書來看,讀完這本書以後你就有了ASP.NET MVC最基本的概念,但是如果真的想要把MVC學好,只看這本一定不夠,需要再看其他的MVC書籍。

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

Value Type和Reference Type的比較

 

在C#中有分三種型別

1.Value Type 實質型別

2.Reference Type 參考型別

3.Pointer Type 指標型別

 

這三種型別中,比較常用的是實質型別和參考型別,今天先跟大家介紹這2種。

 

Value Type非常簡單,就是再存取資料的時候會多開一個記憶體區塊,不會和別人共用記憶體區塊,所使用的記憶體叫做Stack,因為記憶體是各自獨立的,所以資料內容就不會受到別人影響,這是Value Type。

 

Reference Type和Value Type就不一樣了,Reference使用的記憶體叫做Heap,會跟別人共用記憶體區塊,所以一個人變化時,共用這個記憶體區塊的人也會跟著變資料內容,這個是Reference Type。

 

有關於什麼是Stack和Heap?我之前就有寫過相關的文章了,大家可以參考我下面這篇文章

三種記憶體區間-Global、Stack、Heap

 

關於Value Type我們可以看一下這個範例。

Console.WriteLine("Value Type:");

 

int a = 10,b=20;

a = b;

b = 1;

Console.WriteLine("a=" + a + "\t b=" + b);

 

像這樣子因為是Value Type,所以最後的輸出結果也就很單純,結果如下

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

Visual Studio小技巧(1)-快捷鍵整理

    Visual Studio發展到了2019版本,現在已經愈來愈好用,跟舊版本比起來真的有很大的差異。在使用Visual Studio如果能夠善用一些小技巧,對於寫程式非常有幫助,對初學者而言這些小技巧是很重要的,如果不會還是可以寫程式,但是學會這些小技巧,寫程式就可以更快速,使用快捷鍵就是一個很重要的小技巧,在這裡整理出好用的Visual Studio快捷鍵給大家,希望對大家有幫助。

 

 

快捷鍵整理

 

儲存: Ctrl + S
 
儲存全部檔案:Ctrl +Shift + S
 
複製:Ctrl + C
 
貼上:Ctrl + V
 
循環貼上:Ctrl +Shift + V
說明: 使用循環貼上,會一個一個顯示你之前所複製的內容,重複按Ctrl+Shift+v就會一直循環下去,注意選好以後按一下方向鍵或是滑鼠隨便找一個地方點一下,如果按下enter的話內容會消失。
 
建置專案:Ctrl +Shift + B
 

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

程式設計作品總整理

 

   我的部落格以程式設計文章為主,有做一些程式設計的作品,整理如下:

 

C#

 

撲克牌猜大小遊戲

終極密碼遊戲


波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

例外處理Exception (一)

 

   例外處理Exception在程式語言中是比較進階的內容,而一個好的程式會善用例外處理來告訴使用者錯誤訊息,在程式寫好要上線時,就應該要做好例外處理,使用者才不會不知道哪裡操作錯誤。

   例外處理的程式語法如下:

 

    try { //程式在執行時可能發生錯誤的地方 }

    catch (Exception ex) { //程式發生錯誤時會執行的區塊,通常是告知使用者操作錯誤}

    finally { //不論程式是否發生錯誤都一定會執行的區塊 }

 

上面程式中的try…catch…是例外處理程式中一定要有的部分,try是一定會和catch一起出現的,而finally則是可有可無,舉例如下:

 

static void Main(string[] args)

{

            int answer, a, b;

            a = 20;

            b = 0;

                       try

            {              

                answer = a / b;

            }          

文章標籤

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

撲克牌猜大小遊戲-C#

 

    這是一個很簡單的撲克牌遊戲,適合有一定程度的初學者練習,猜撲克牌的大小或是牌色,而且可以下注,猜對的話贏得籌碼,猜錯輸掉籌碼。

 

遊戲畫面如下:

遊戲一開始畫面,按下發牌。


按下發牌以後輸入你要押注的金額,然後選擇你要押哪一個,大牌、小牌、黑色牌、紅色牌,點選按鈕看結果。


押對的話籌碼就會增加。


押錯的話籌碼就會減少。


如果不幸的籌碼變成0,那你就破產了,要按重新開始,遊戲就會開新的一局,就可以繼續遊戲。


波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

委派(Delegate)

 

    委派(Delegate)在程式設計中算比較進階的觀念,還是有很多機會用到。委派的意思是把工作派給別人去做,就好像是經紀人或是仲介的概念,把事情委託給經紀人或仲介處理。更精確地講,委派就是將方法定義為參數,指定要傳入的參數,程式中的方法交給委派來處理,而不是自己處理。

           舉一個程式的例子和大家做說明,今天我要做一個產生數字的程式如下:

 

public static int[] GetRandomNumber(int maxno,int amount)   //產生亂數的方法

        {

            Random random = new Random();

            int[] nums = new int[amount];

 

            for(int i=0;i<amount;i++)

            {

                nums[i] = random.Next(0,maxno);

            }

            return nums;

        }

 

在這裡特別說明一下Random是一個產生亂數的方法,random.Next(數字A,數字B)表示產生範圍從(數字A)(數字B-1)這個範圍的亂數,特別要注意範圍的最大數字為(數字B-1)

 

以上這個方法就可以產生自訂數量,自訂範圍內的亂數,把這一段程式丟給委派來做。

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

Enum Switch

 

在上一篇,和大家介紹了enum列舉,而enum在應用上常和switch做搭配。

 

switch是一個用來取代if else的方法,寫程式可以不會用switch只用if else,這結果其實是相同的,但如果不使用switch,只會使用if else,這樣會造成程式變得很長,所以還是應該要會使用switch比較好。這篇文章的重點不在介紹怎麼使用switch,如果對switch還不熟悉的朋友可以自己上網學習甚麼是switch

switch也可以不需要和enum搭配使用,結果其實是一樣的,但是好的程式要讓人容易理解和好維護,使用enum的目的就是可以讓程式較好理解,讓程式較好維護,才不會程式一時之間看不懂,還要再去看衍生的程式。

舉個例子會比較好理解。

今天我要做一個投注系統,依照使用者的輸入來增加使用者的下注金額,程式如下:

//現在下注的金額

int mybet = 0;

 

//賭注金額增減

private void BetMoney(int money)

{

            //依照不同的狀況,增加玩家的下注金額

            switch(money)

            {

case 0:

                    mybet = 0;

                    break;

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

C#程式教學文章總整理

 

    我的部落格以介紹程式設計為主,最近寫了C#程式設計教學的文章,整理如下:

 

索引子 get;set;

列舉 enum

Enum和Switch

委派(Delegate)

例外處理Exception (一)

 


文章標籤

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

1 2