วันศุกร์ที่ 14 สิงหาคม พ.ศ. 2558

C# : char Charecter (ตัวอักษร อักขระ)

คือ ชนิดข้อมูลพื้นฐานที่ใช้เก็บ ตัวอักษร หรือ อักขระ (ขนาด 16-bit ของ C#)

char[] chars = new char[4];

chars[0] = 'X';        // Character literal 
chars[1] = '\x0058';   // Hexadecimal
chars[2] = (char)88;   // Cast from integral type
chars[3] = '\u0058';   // Unicode 

foreach (char c in chars)
{
    Console.Write(c + " ");
}
// Output: X X X X
// ref  https://msdn.microsoft.com/en-us/library/x9h8tsay.aspx

C# : String สตริง

คือ กลุ่มของตัวอักษร หรือเป็น Array of Character  ตัวอักขระ null หรือ '\0' เป็นตัวสิ้นสุดสตริง ดังนั้นตัวแปรสตริง จึงเป็นตัวแปรแบบโครงสร้าง เหมือนกับ Array
char[] charArray = new char[4];
 charArray[0] = 'A';
 charArray[1] = 'B'; 
 charArray[2] = 'C';
 charArray[3] = 'D';
string exString = new string(charArray); 
 Console.WriteLine(exString); 
Console.WriteLine(exString == "ABCD");

/////////////////////////Output///////////////////////////////////// 
ABCD
True

วันจันทร์ที่ 29 มิถุนายน พ.ศ. 2558

C# Ascending การจัดเรียงน้อยไปหามาก

    Ascending เป็นการจัดเรียงค่าจากน้อยไปหามาก จากต่ำไปสูง ซึ่งเป็นค่าเริ่มต้นของ C# ตัวอย่าง

    using System;
    using System.Linq;

    class Student
   {
       public int Grade{ get; set; }
       public string Name{ get; set; } 
       public int Id { get; set; }
    }

    class Program
    {
       static void Main()
       {
    Student[] array = new Student[]
   {
       new Student(){Grade= 12,Name = "And" , Id = 4},
       new Student(){Grade= 10,Name = "Or", Id = 0},
       new Student(){Grade= 1,Name = "Nor" Id = 7},
       new Student(){Grade= 3,Name="Not", Id = 9}
    };
 
 var result = from std in array
       orderby std.Grade descending, std.Id ascending
       select std;

 foreach (var std in result)
     Console.WriteLine("{0}, {1}", std.Salary, std.Id);
       }
    }

วันอาทิตย์ที่ 28 มิถุนายน พ.ศ. 2558

C# As คืออะไร

As เป็นคำสั่งในการแปลงค่า เหมือนกับ (int)1.35 ซึ่งหากการแปลงค่านั้นไม่สามารถทำได้ จะไดค่าที่เป็น Null ยกตัวอย่าง

           class Base
           {
               public override string  ToString()
               {
              return "Base";
               }
          }
          class Derived : Base
          {

          }

          class Program
          {
              static void Main()
              {

                 Derived d = new Derived();

                  Base b = d as Base;
                  if (b != null)
                  {
                    Console.WriteLine(b.ToString());
                  }

             }
         }

    หรือ

    class ClassA { }
    class ClassB { }

    class MainClass
   {
      static void Main()
      {
          object[] objArray = new object[6];
          objArray[0] = new ClassA();
          objArray[1] = new ClassB();
          objArray[2] = "hello";
          objArray[3] = 123;
          objArray[4] = 123.4;
          objArray[5] = null;

          for (int i = 0; i < objArray.Length; ++i)
         {
             string s = objArray[i] as string;
             Console.Write("{0}:", i);
             if (s != null)
             {
                Console.WriteLine("'" + s + "'");
             }
             else
             {
                 Console.WriteLine("not a string");
             }
          }
     }
  }
/*
Output:
0:not a string
1:not a string
2:'hello'
3:not a string
4:not a string
5:not a string
*/


ref https://msdn.microsoft.com/en-us/library/cscsdfbt.aspx
  

วันเสาร์ที่ 27 มิถุนายน พ.ศ. 2558

C# Abstract Class คืออะไร

    Abstract Class คือ Class ชนิดหนึ่งที่มีคุณสมบัติพิเศษ คือ สามารถมี Method ได้ทั้งแบบมีส่วนการประมวลผล กับแบบ Method ที่มีเพียงแค่ชื่อเพียงเท่านั่น ยกตัวอย่าง

    abstract class Customer
    {
        public void PrintCustomer()
        {
            Console.WriteLine(“Customer X”);
        }
        public abstract void PrintCustomerAddress();
    }


    class UnitTest : Customer  //extends

     {
        public override void PrintCustomerAddress()
        {
            Console.WriteLine(“CustomerAddress”);
        }
    }


namespace ConsoleUnitTest
{
    class Program
    {      
        static void Main(string[] args)
        {

            UnitTest t = new UnitTest ();
            t.PrintCustomer();
            t.PrintCustomerAddress();

        }
    }

กรณีศึกษา
      สมมติว่ามี class ไว้เก็บข้อมูลพนักงานขายสินค้า พนักงานขับรถ และผู้บริหาร โดยพนักงานทุกคนในบริษัทจะได้รับโบนัสปีละ 1 ครั้ง
      กรณีนี้เราจะเห็นว่าพนักงานทุกประเภทสามารถ GetBonus() ได้ เราจึงควรสร้าง base class ขึ้นมาใหม่และย้าย method นี้ไปไว้ที่ base class แต่ปัญหายังไม่จบ เพราะวิธีการคำนวนโบนัสของแต่ละคนแตกต่างกัน ทำให้เราไม่สามารถ implement GetBonus() ไว้ที่ base class ได้ หรือถ้าเราสร้างเป็น method ที่ไม่มี implementation ไว้ เราอาจจะสร้าง sub class ตัวใหม่ขึ้นมาและลืม implement method นี้ทำให้พนักงานประเภทนั้นไม่ได้รับโบนัสตอนสิ้นปี
เพื่อบังคับให้ทุก sub class implement method GetBonus() เราจึงควรกำหนด method GetBonus() ที่ base class ให้เป็น abstract


ref : http://www.narisa.com/forums/index.php?showtopic=32477

วันพฤหัสบดีที่ 25 มิถุนายน พ.ศ. 2558

C# IP Scanner ตรวจสอบ IP ที่ใช้งาน/ไม่ได้ใช้งาน

การตรวจสอบ IP ด้วย การ Ping ของ C# และ การตรวจสอบ MAC Address ด้วย SendARP

Sourcecode

วันพฤหัสบดีที่ 18 มิถุนายน พ.ศ. 2558

C# การแปลงจำนวนเงิน จากตัวเลข เป็นตัวอักษร ภาษาไทย / ปัดทศนิยม แบบไทย (สตางค์)

     C#   การแปลงจำนวนเงิน จากตัวเลข เป็นภาษาไทย ปัดเศษให้สามารถทอนเงินเป็นสตางค์ได้

 

วันอังคารที่ 12 พฤษภาคม พ.ศ. 2558

C# การทำตัวติดตั้งแบบ One Click Deploy แบบง่าย

เหมาะสำหรับการติดตั้งโปรแกรมผ่านระบบเครื่อข่ายภายใน อาศัยการตรวจสอบวันที่ Update ล่าสุด
หากวันที่ไม่ตรงกับ File Server ให้ Coppy มาลงที่ Client หลังจาก Update เรียบร้อยแล้วจึงสั่งเปิดโปรแกรม ที่ต้องการ


โหลด SouceCode