Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 3 của 3
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Sử dụng getch() trong lập trình C#

    Hôm nay, tự dưng Mr Pete vào YM hỏi mình "trong C#, có phương thức nào giả lập hàm getch() trong C không?"
    - "Tự mò trong MSDN đi pa"
    - "Tìm rồi, không có"
    Thế là bước chân lãng tử C# bắt đầu tìm đường giải quyết cái câu hỏi có vẻ hơi bị thừa này, tất nhiên là mình không được dùng Console.ReadLine() rồi, vì nó trả về kiểu string, còn getch() thì nó trả về char.
    Sau một hồi tìm kiếm, mình cũng tìm ra cách, đơn giản lắm, mọi người tham khảo chương trình console sau của mình thì sẽ hiểu ngay cả mà:

    Mã:
    using System;using System.Collections.Generic;using System.Text;using System.Runtime.InteropServices; namespace ConsoleApplication1{    class Program    {        [DllImport("msvcrt")]        static extern char _getch();        static void Main(string[] args)        {            Console.WriteLine("Chao anh em CViet");            _getch();  // hoac char ch = _getch();        }    }}
    Lâu lâu tìm về nguồn cội (C) cũng thấy vui,anh em nhỉ?

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Chi cho cực vậy, neverland87, dùng Console.ReadKey hay Console.ReadKey(true/false) không khỏe hơn à.
    Hạn chế call native api trong .NET, khi gọi, compiler phải sinh code thunk rồi .NET runtime phải làm rất, rất nhiều việc để chuyển từ .NET -> native -> .NET.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi TQN
    Chi cho cực vậy, neverland87, dùng Console.ReadKey hay Console.ReadKey(true/false) không khỏe hơn à.
    Hạn chế call native api trong .NET, khi gọi, compiler phải sinh code thunk rồi .NET runtime phải làm rất, rất nhiều việc để chuyển từ .NET -> native -> .NET.
    Em xin bổ sung, phương thức Console.ReadKey() trả về cấu trúc ConsoleKeyInfo, muốn trả về char (cho tương đương getch()) thì ta làm như sau:

    Mã:
            static void Main(string[] args)        {            Console.Write("Hello world");            ConsoleKeyInfo ckf = Console.ReadKey(true);            char ch = ckf.KeyChar;        }

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •