Components on Blazor 1024 557 mezo

Components on Blazor

Hi my fellow Padawans

Blazor is a frontend framework like Angular or React but mostly like React and it has components for create pages and reusable objects functionalities.

But how can we create a component and use it on the pages in our Blazor application?

First Read this Article and create your first Blazor application ­čÖé

Then on your Solution Explorer find Pages and right click on it and Add -> Razor Component

On Add New Item windows write your components name and create it

I decided to make something different and I created Todo.Razor file and I add these codes on the page

@page "/todo"
@using BlazorApp1.Data;


    @foreach (var todo in todos)

<input placeholder="Something todo" @bind="newTodo" />
<button @onclick="AddTodo">Add todo</button>

@code {
    private List<TodoItem> todos = new();
    private string? newTodo;

    private void AddTodo()
        if (!string.IsNullOrWhiteSpace(newTodo))
            todos.Add(new TodoItem { Title = newTodo });
            newTodo = string.Empty;

And find NavMenu.razor file inside of the Shared folder on your Solution Explorer. Find the last item of menu divs and Add this code:

  <div class="nav-item px-3">
            <NavLink class="nav-link" href="todo">
                <span class="oi oi-list-rich" aria-hidden="true"></span> Todo

You will have a NavMenu.Razor page like this:

<div class="top-row ps-3 navbar navbar-dark">
    <div class="container-fluid">
        <a class="navbar-brand" href="">BlazorApp1</a>
        <button title="Navigation menu" class="navbar-toggler" @onclick="ToggleNavMenu">
            <span class="navbar-toggler-icon"></span>

<div class="@NavMenuCssClass" @onclick="ToggleNavMenu">
    <nav class="flex-column">
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="" Match="NavLinkMatch.All">
                <span class="oi oi-home" aria-hidden="true"></span> Home
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="counter">
                <span class="oi oi-plus" aria-hidden="true"></span> Counter
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="fetchdata">
                <span class="oi oi-list-rich" aria-hidden="true"></span> Fetch data
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="todo">
                <span class="oi oi-list-rich" aria-hidden="true"></span> Todo

@code {
    private bool collapseNavMenu = true;

    private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null;

    private void ToggleNavMenu()
        collapseNavMenu = !collapseNavMenu;

When you open the webpage you will see the Todo on your left navigation menu and then you will see your amazing Todo application like below:

If you want to use this component in other pages for example add this component on the home page. Go to your Index.Razor inside of the Pages folder and add this code :


Your index.Razor will look like this

@page "/"


<h1>Hello, Everyone!</h1>

Welcome to your new app. Hello 

<SurveyPrompt Title="How is Blazor working for you?" />


Then we RUN our app oooorrr we can Hot Reload and we will see the result like below:

That is easy isn’t it ?

I hope that is helpful

May the knowledge be with you

Create Your First Blazor Application 1024 557 mezo

Create Your First Blazor Application

Hello My Fellow Padawans ­čÖé

Today I will tell you about a new Frontend Technology called “Blazor”. It sounds similar from somewhere… Yes Razor and yes its a Microsoft technology.

Ok but lets remember what is RAZOR first: Razor is a format for generating text-based content, like HTML. Razor files have cshtml or a razor file extension, and contain a mix of C# code along with HTML.

What is Blazor

Blazor is a user-interface framework built on .NET and Razor. Blazor applications can run on a server as part of an ASP.NET application or can be deployed to run in the browser on a user’s machine similar to a single-page application. It comes with 2 different app styles.

Blazor Server: is an implementation of the Blazor user-interface framework as part of the ASP.NET Core web development framework, deployed to a web server. Developing an application with Blazor Server generates HTML on a web server as it is requested by web site visitors, typically using a web browser. That HTML is then delivered to the visitor’s browser, and a two-way communication pipeline is maintained using ASP.NET Core SignalR and preferring a Web Sockets connection.

Users that click buttons, navigate, and perform other interactions with a Blazor Server application have their actions transmitted on this SignalR connection, and the server responds with user-interface updates using the same connection. The Blazor Server framework automatically updates the browser with the content generated on the web server.

Blazor WebAssembly: Shortened to Blazor WASM, is an implementation of the Blazor user-interface framework that runs on the HTML 5 standard WebAssembly runtime present in all modern browsers. The binary output of your application, the DLL files, are transmitted to the browser and run with a version of .NET that has been optimized to work with the WebAssembly runtime regardless of the underlying operating system of the device browsing to the website.

Since WebAssembly is a technology that runs entirely in the browser, it’s possible to deploy this model of the Blazor application using files that a web server doesn’t parse or interact with. This type of “static” approach reduces the requirements for a web server and shifts all processing for the application to the user’s machine.

Advanced processing and logic can take place in the browser. When the application needs data or to interact with other services, it can use standard web technologies to communicate with HTTP services.

How to build an application with Blazor

Start your Visual Studio 2022

Then create Blazor Server App and in the Configure your new project window, enter BlazorApp as the project name and select Next.

In the Additional information window, select .NET 7.0 (Standard Term Support) in the Framework drop-down if not already selected and click the Create button.

Your project is created and loaded in Visual Studio. Take a look at the contents of your project using Solution Explorer.

Several files were created to give you a simple Blazor app that is ready to run.

  • Program.cs is the entry point for the app that starts the server and where you configure the app services and middleware.
  • App.razor is the root component of the app.
  • The Pages directory contains some example web pages for the app.
  • BlazorApp.csproj defines the app project and its dependencies and can be viewed by double-clicking the BlazorApp project node in the Solution Explorer.
  • The launchSettings.json file inside the Properties directory defines different profile settings for the local development environment. A port number is automatically assigned at project creation and saved on this file.

To run your application basically click the Run button.

When you made some changes and you want to see your changes on the browser you need to click the Hot Reload button

If you want to make “Hot Reload” every time you save your changes then you need to click the menu button next to “Hot Reload” and select “Hot Reload on File Save” Then VS will watch your file save and refresh your web app on the browser to show your changes.

After you run your app you will see the default app of the Blazor.

Congrats you made your first Blazor App and make it run!

Last thing I want to show is how Blazor files and pages look like

_Host.cshtml This holds our application and renders page components.

@page "/"
@namespace BlazorApp1.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
    Layout = "_Layout";

<component type="typeof(App)" render-mode="ServerPrerendered" />

Index.razor : This is the Home page that you see on the screenshot below.

@page "/"


<h1>Hello, Everyone!</h1>

Welcome to your new app. Hello 

<SurveyPrompt Title="How is Blazor working for you?" />

Counter.razor and this is the counter component as a page. It’s easy to render and reuse.

@page "/counter"



<p role="status">Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {
    private int currentCount = 0;

    private void IncrementCount()

Congrats ­čÖé you open the new Blazor App and make that work

I will keep continuing to write about it coz I probably will use it for my company.

I hope that is helpful

May the knowledge be with you

C# ile Powerpoint Sunumu Haz─▒rlamak 554 382 mezo

C# ile Powerpoint Sunumu Haz─▒rlamak

Merhaba arkada┼člar
Uzun s├╝reden beri bir makale yazmaya vakit bulam─▒yorum ama yava┼č yava┼č geri d├Ân├╝yorum. Bu yaz─▒da sizlere zevkli k├╝├ž├╝k bir ├Ârnek g├Âstermek istiyorum. ­čśÇ C# ├╝zerinden program yard─▒m─▒ ile PowerPoint sunumu haz─▒rlaman─▒n nas─▒l oldu─ču ile ilgili ba┼člang─▒├žta ├žok i┼činize yarayacak bir kod par├žas─▒
Bunun i├žin ├Âncelikle bir windows Forms projesi a├žal─▒m ve 1 tane Buton ekleyelim ­čÖé Projemiz i├žersine Referans olarak 2 ├Ânemli k├╝t├╝phane eklememiz gerekiyor. Sa─ča t─▒klay─▒p “Add Reference” dedikten sonra “COM” sekmesi i├žersinde bulunan microsoft graph 15.0 object library ve microsoft PowerPoint 15.0 object library k├╝t├╝phanelerini se├žip ekleyelim.
Art─▒k gerisi ├žok kolay ­čÖé i┼čte bundan sonra i┼či yapacak olan kod par├žas─▒

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Interop.PowerPoint;
using Microsoft.Office.Core;

namespace testToCreatePttFileFromImages
public partial class Form1 : Form
public Form1()

private void button1_Click(object sender, EventArgs e)
string pictureFileName = “C:\\picToVideo\\2.jpg”;

Microsoft.Office.Interop.PowerPoint.Application pptApplication = new Microsoft.Office.Interop.PowerPoint.Application();

Microsoft.Office.Interop.PowerPoint.Slides slides;
Microsoft.Office.Interop.PowerPoint._Slide slide;
Microsoft.Office.Interop.PowerPoint.TextRange objText;

// Create the Presentation File
Presentation pptPresentation = pptApplication.Presentations.Add(MsoTriState.msoTrue);

Microsoft.Office.Interop.PowerPoint.CustomLayout customLayout = pptPresentation.SlideMaster.CustomLayouts[Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutText];

// Create new Slide
slides = pptPresentation.Slides;
slide = slides.AddSlide(1, customLayout);

// Add title
objText = slide.Shapes[1].TextFrame.TextRange;
objText.Text = “The Header Of The Presentation”;
objText.Font.Name = “Arial”;
objText.Font.Size = 32;

//objText = slide.Shapes[2].TextFrame.TextRange;
//objText.Text = “this text come after the heading with bullet”;

Microsoft.Office.Interop.PowerPoint.Shape shape = slide.Shapes[2];
slide.Shapes.AddPicture(pictureFileName, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue, shape.Left, shape.Top, shape.Width, shape.Height);

//slide.NotesPage.Shapes[2].TextFrame.TextRange.Text = “the text is for the notes to specific page”;

pptPresentation.SaveAs(@”c:\picToVideo\fppt.pptx”, Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsDefault, MsoTriState.msoTrue);


String Char Dizisidir! 920 300 mezo

String Char Dizisidir!

Merhaba arkada┼člar
├çal─▒┼čt─▒─č─▒m ┼čirkette bulunmu┼č oldu─čum proje i├žin Senior yani 2 3 y─▒l deneyimi olan developer arkada┼člar ar─▒yoruz ve bunun ile ilgili m├╝d├╝r├╝m m├╝lakat g├Âr├╝┼čmelerine benimde girmemi rica etti bende seve seve kabul ettim. M├╝lakatta gelen arkada┼člara neler yapt─▒─č─▒n─▒ sordu─čumuzda herkes g├╝zel g├╝zel anlat─▒yor yapt─▒klar─▒n─▒ i┼č g├Âr├╝┼čmesinde g├Âze girmek i├žin hepimizin yapt─▒─č─▒ gibi her┼čeyi anlat─▒yor anlatmaya gayret ediyor. Ancak

Dikkatimi ├žeken bir konu var ki i┼čte oda bu yaz─▒y─▒ sizlerle payla┼čmak isteyi┼čimin as─▒l sebebi : Senior olarak al─▒nacak ve daha ├Ânce bir ├žok projede g├Ârev alm─▒┼č olan arkada┼člar ├žok ├žok ├žok basit bir sorudan elendiklerinin veya olumsuz bir not ald─▒klar─▒n─▒n fark─▒nda de─čiller.┬áString bir de─či┼čken i├žindeki karakterlerin say─▒lmas─▒ ve i┼člem yap─▒lmas─▒ ile ilgili bir sorumuz var ve burada herkese hi├žbir string metot vs kullanmay─▒n diye de uyar─▒yoruz tahmin etti─činiz gibi basit k├╝├ž├╝k bir algoritma sorusu.
Ne var bunda diyebilirsiniz i┼čte konu bu zaten ­čÖé arkada┼člar─▒n hi├ž biri string bir char dizisidir deyip bu ┼čekilde foreach ile veya for ile kodunu ka─č─▒da d├Âkmeye ba┼člamad─▒. Herkes bir ipucu verilmesini bekliyor yada farkl─▒ yollarla bir array e ├ževirme i┼čine giriyor.Halbuki ismini yazarken bile asl─▒nda bir karakter dizisi kulland─▒─č─▒n─▒n fark─▒nda bile de─čil.
K├╝├ž├╝k ayr─▒nt─▒lar veya bilgiler hayat kurtar─▒r yada iyi yerlere getirebilir.

Unutmayın  String bir Char dizisidir.

Umar─▒m Yararl─▒ Olur ve bunu okuyan arkada┼člar m├╝lakatlarda ba┼čvurduklar─▒ g├╝zel i┼č yerlerine sevdikleri i┼čleri yapmak ├╝zere girebilirler.

Bilgiyle kal─▒n

M.Zeki Osmanc─▒k

SOLID OOP Prensipleri 511 409 mezo

SOLID OOP Prensipleri

Merhaba arkada┼člar
Bu yaz─▒mda sizlerle OOP yazarken dikkat etmemiz gereken OOP yi ger├žek anlam─▒yla programlar─▒m─▒za veya web sitelerimize uygulama a┼čamas─▒nda nelere dikkat etmeliyiz bu konyu i┼čleyen SOLID OOP Prensipleri┬áile ilgili k├╝├ž├╝k bir bilgilendirme yapaca─č─▒m
OOP yi herkes bilir az ├žok anlat─▒r veya basit y├Ântemlerle uygular yada uygulad─▒─č─▒n─▒ sanar. Halbuki OOP programlama yaparken bir tak─▒m prensipler uygulanmal─▒d─▒r. Bu prensiplerin ba┼č harflerinden olu┼čan bir keyword var elimizde. SOLID
Solid 5 ayr─▒ prensibin birle┼čmi┼č halidir ve OOP yaparken uygulamam─▒z gereken kurallardan bahsederler. Hadi bakal─▒m bu akrosti┼č ┼čiir tad─▒ndaki prensipler neymi┼č g├Ârelim:
1- Single Responsibility Principle
2- Open/Closed Principle
3- LiskovÔÇÖs Substitution Principle
4- Interface Sergregation Principle
5- Dependency Inversion Principle
─░lk madde ile ba┼člayal─▒m k├╝├ž├╝k a├ž─▒klamalar yapmaya.
1. Single Responsibility Principle : Bu prensibe g├Âre bir metot, s─▒n─▒f,nesne vb. yap─▒lar─▒n yanl─▒zca bir tane g├Ârevi olur. Bir metot, s─▒n─▒f,nesne vb. de─či┼čtirmek i├žin yanl─▒zca bir sebebimiz olmal─▒d─▒r. Birden fazla nedenimiz varsa bir yanl─▒┼čl─▒k var ve bu prensibe uymuyoruz anlam─▒na gelir. Ama├ž her metot, s─▒n─▒f,nesne vb. yap─▒ya tek bir g├Ârev tek bir sorumluluk y├╝klemektir.
2. Open/Closed Principle : Yazm─▒┼č oldu─čunuz metot, s─▒n─▒f,nesne vb. yap─▒lar geli┼čtirmeye a├ž─▒k ancak de─či┼čtirmeye kapal─▒ olmal─▒d─▒r. Bu ne demektir peki: yazm─▒┼č oldu─čunuz kod asla de─či┼čtirilmemelidir yanl─▒zca ├╝zerine eklemeler yap─▒lmal─▒d─▒r. Kodlar─▒m─▒z─▒ yazarken bu ┼čekilde dizayn etmeliyiz.
3. LiskovÔÇÖs Substutions Principle : Bu prensibe g├Âre alt s─▒n─▒flardan elde etti─činiz bir nesne ile ├╝st s─▒n─▒ftan elde edilen nesne yer de─či┼čtirirse bu de─či┼čim kesinlikle ve kesinlikle ayn─▒ davran─▒┼ča sahip olmal─▒d─▒r. Yani ├Ârnekleyecek olursak OOP anlat─▒rken hep bahsetti─čimiz bir ├Ârnek olan CANLI s─▒n─▒f─▒m─▒z olsun ve bu CANLI ad─▒ndaki s─▒n─▒f─▒m─▒z INSAN ve HAVYAN adl─▒ iki s─▒n─▒fa kal─▒t─▒m vermi┼č olsun. Bu prensipte anlat─▒lmaya ├žal─▒┼č─▒lan ┼čey e─čer ben bir i┼člemde CANLI s─▒n─▒f─▒n─▒ kullan─▒yorsam ve i┼člemlerim ba┼čar─▒l─▒ oluyorsa INSAN veya HAYVAN s─▒n─▒f─▒ndan ald─▒─č─▒m ├Ârnekler ilede ayn─▒ i┼člemleri ba┼čar─▒l─▒ olarak ger├žekle┼čtirebilmeliyim i├žersinde bunu engelleyecek ba┼čka metot, s─▒n─▒f,nesne vb. yap─▒lar bulunmamal─▒ demek istiyor.
4. Interface Sergregation Principle : Prensip olarak ayn─▒ ├Âzelliklere sahip olan s─▒n─▒flar─▒ tek bir interface de toplamak sonradan o s─▒n─▒flar─▒n hepsinde kesin olarak kullan─▒lmayacak olan ba┼čka metot, s─▒n─▒f,nesne vb. yap─▒lar─▒ bu interface i├žersine eklemek do─čru de─čildir. Ilk ba┼čta belki bir ├ž├Âz├╝m olabilir ama prensip olarak yanl─▒┼čt─▒r. ├ç├Âz├╝m ise interface ÔÇśleri par├žalamakt─▒r. Kesin olarak kullan─▒lacak olan ortak metot, s─▒n─▒f,nesne vb. yap─▒lar─▒ ayr─▒ ayr─▒ interface ler i├žersinde toplayarak s─▒n─▒flara implement etmektir.
5. Dependency Inversion Principle : Somut s─▒n─▒flara olan ba─č─▒ml─▒l─▒─č─▒ soyut s─▒n─▒flar veya interface ler ile ortadan kald─▒rmakt─▒r. Yani bir servis s─▒n─▒f─▒m─▒z var ve bu servis s─▒n─▒f─▒ DB i┼člemleri ile ilgili i┼člemler ger├žekle┼čtiriyor. Ba┼čka bir A s─▒n─▒f─▒ ├╝zerinden bu Servis s─▒n─▒f─▒na ba─č kurup i┼člemlerimizi ger├žekle┼čtirirken ├╝retti─čimiz A s─▒n─▒f─▒m─▒z i├žersinde servis s─▒n─▒f─▒n─▒n bir ├žok ├Ârne─či al─▒nacak ve bir ├žok yerde kullan─▒labilecek ve kodlar─▒m─▒z─▒ de─či┼čtirirken ba─čl─▒ olan k─▒s─▒mlarda de─či┼čecek yada servis s─▒n─▒f─▒nda yap─▒lan bir de─či┼čiklik bizim servisi kullanan A s─▒n─▒f─▒m─▒zdada de─či┼čikliklere sebep olacak . Ama├ž bu ba─č─▒ml─▒l─▒─č─▒ ortadan kald─▒rmak ve daha g├╝zel bir kod ortam─▒ sa─člamak.
Bu prensiplerde kod yazmak zorunlu olarak yapman─▒z gereken bir ┼čey de─čil ama bu ┼čekilde yazman─▒n tek bir amac─▒ var daha az hata daha g├╝zel kodlar ­čśÇ
Bilgiyle Kal─▒n
M.Zeki Osmanc─▒k

Design Patterns (Tasar─▒m Deseni) Nedir ? 1024 777 mezo

Design Patterns (Tasar─▒m Deseni) Nedir ?

Merhaba arkada┼člar
Konumuz Design Pattern ­čÖé Biliyorum bir ├žok ki┼či bu konu hakk─▒nda bir┼čeyler yazm─▒┼čt─▒r ancak birde ben yazay─▒m dedim. Benim blogumda neden design pattern yok ben neden yazm─▒yorum dedim ­čÖé ve i┼čte Design Pattern…
Design Pattern genel olarak yaz─▒l─▒m tasar─▒m─▒ s├╝recinde s├╝rekli kar┼č─▒la┼č─▒lan problemlere ├ž├Âz├╝mler ├╝reten haz─▒r kal─▒plard─▒r. ─░stenilen herhangi bir yere yerle┼čtirildi─činde ├žal─▒┼čan haz─▒r tasar─▒mlar de─čildirler. ─░┼čin asl─▒ problemler i├žin bulunan ├ž├Âz├╝mlere yap─▒lan a├ž─▒klamalard─▒r
OOP(Object Oriented Programming) prensipleri do─črultusunda olu┼čturulan s─▒n─▒flar─▒n ba┼čka s─▒n─▒flara ba─č─▒ml─▒l─▒─č─▒n─▒n en aza indirgenmesi beklenir. Bu durum esnek bir yap─▒y─▒ beraberinde getirir ve yaz─▒l─▒m─▒n kalitesi artar. ─░leride gerekecek geli┼čtirmelere daha m├╝sait bir yap─▒ sa─člam─▒┼č olur. Bu yap─▒, yaz─▒l─▒mc─▒ya ve o yaz─▒l─▒mc─▒dan sonra gelecek yaz─▒l─▒mc─▒ya zamandan ve i┼č g├╝c├╝nden ciddi manada tasarruf sa─člar.
Tasar─▒m ┼čablonlar─▒ a┼ča─č─▒da yer alan ortak ├Âzelliklere sahiptir:

  • Edinilen tecr├╝beler sonunda ortaya ├ž─▒km─▒┼člard─▒r.
  • Amerikan─▒n tekrar tekrar ke┼čfedilmesini engeller ­čśÇ .
  • Tekrar kullan─▒labilir kal─▒plard─▒r.
  • Ortak kullan─▒larak daha b├╝y├╝k problemlerin ├ž├Âz├╝lmesine katk─▒ sa─člarlar.
  • Devaml─▒ geli┼čtirilerek, genel bir ├ž├Âz├╝m olmalar─▒ i├žin ├žaba sarfedilir.

Tasar─▒m ┼čablonlar─▒ de─či┼čik kategorilere ayr─▒l─▒r. Bunlar:

  • Olu┼čturucu tasar─▒m ┼čablonlar─▒ (creational patterns)
  • Yap─▒sal tasar─▒m ┼čablonlar─▒ (structual patterns)
  • Davran─▒┼čsal tasar─▒m ┼čablonlar (behavioral patterns)


  • Abstract Factory
  • Builder
  • Factory Method
  • Prototype
  • Singleton


  • Adapter
  • Bridge
  • Facade
  • Decorator
  • Composite
  • Flyweight
  • Proxy


  • Command
  • Memento
  • Strategy
  • Iterator
  • State
  • Chain Of Responsibility
  • Mediator
  • Observer
  • Template Method
  • Visitor

Bu desenlerin yanl─▒zca ├žok ├žok basit a├ž─▒klamas─▒. Yukarda sayd─▒─č─▒m desenleri tek tek a├ž─▒klamay─▒ planl─▒yorum ­čÖé Zaman bulduk├ža yaz─▒yor olaca─č─▒m. Sizlerde beni bekliyor olun ­čśÇ
Bilgiyle Kal─▒n ­čśë
M.Zeki Osmanc─▒k

C# Dynamic Nesnesi 350 106 mezo

C# Dynamic Nesnesi

Merhaba arkada┼člar
Bu yaz─▒mda C# daki yeni bir keyword’ den bahsetmek istiyorum DYNAMIC.
Dynamic keyword u C# 4.0 ile birlikte 2010 da gelen bir keyword. Bu keyword Dynamic Language Runtime (DLR) yi y├Ânetir DLR dedi─čimiz olay t─▒pk─▒ CLR (Common Language Runtime) gibi ├žal─▒┼čan bir yap─▒d─▒r. Dynamic bir nesne Dynamic tipindeki classlar─▒n y├Ânetiminin nas─▒l y├Ânetilece─čini belirler. T─▒pk─▒ CLR de oldu─ču gibi tamamen runtime da derlenir ve ├žal─▒┼č─▒rlar.

Diyelim ki iki farkl─▒ class olu┼čturmak istiyoruz ancak i├žersinde ayn─▒ isimden 2 metot olacak daha sonra s├Âz konusu Dynamic s─▒n─▒fdan bir instance al─▒yorsunuz. Dynamic nesne ile ayn─▒ isimdeki ancak farkl─▒ classlar i├žersindeki metotlar─▒ ├ža─č─▒rabiliyorsunuz.

Bir de ├Ârne─če g├Âz atal─▒m ­čśÇ


├ç─▒kt─▒ da ┼×├Âyle oluyor ┼čekil ├Ârnek 1 A ­čśÇ


DataTable ‘dan List e D├Ân├╝┼čt├╝rme 342 204 mezo

DataTable ‘dan List e D├Ân├╝┼čt├╝rme

Merhaba arkada┼člar

Bu yaz─▒da sizlere DataTable ile gelen veriyi List<T> olarak geri d├Ând├╝rmek istersek bu d├Ân├╝┼čt├╝rmeyi LambdaExpressions /LINQ ile nas─▒l yapabiliriz ondan bahsetmek istiyorum.

Umar─▒m Yararl─▒ Olur
Bilgiyle Kal─▒n
M.Zeki Osmanc─▒k

HttpCookie Nedir ? 279 180 mezo

HttpCookie Nedir ?

Merhaba arkada┼člar
HttpCookie yap─▒s─▒ndan ├Ânce ├žok temel bilgi olarak Cookie nedir ondan bahsedelim ­čÖé
Cookie Nedir?
Bir web sayfas─▒ sunucusunun sizin bilgisayar─▒n─▒z─▒n hard diskine yerle┼čtirdi─či ufak bir text dosyas─▒d─▒r. Yani, o web sitesinin bir sonraki ziyarette sizi tan─▒mas─▒ i├žin ge├žerli bir bilgidir. Bu text dosyas─▒ bir komut dosyas─▒ olmad─▒─č─▒ gibi, vir├╝s de de─čildir. Size ├Âzel bir tan─▒mlamad─▒r ve sadece bu kodu tan─▒mlayan web sunucusu taraf─▒ndan okunabilir.CookieÔÇÖnin amac─▒; sizin o siteyi yeniden ziyaret etti─činizi web sunucuya bildirmekten ibarettir.

HttpCookie Nedir?
Asp.Net ile yapt─▒─č─▒m─▒z sitelerimizde Cookie olu┼čturmak i├žin kulland─▒─č─▒m─▒z bir class t─▒r. Cookie nin y├Ânetimini HttpRequest ve HttpResponse class ile ger├žekle┼čtirilir.
HttpCookie yi olu┼čturmak i├žin

HttpCookie MyCookie = new HttpCookie("Cerezim");

Instance al─▒nd─▒ktan sonra i├žersindeki property leride ┼ču ┼čekilde k─▒saca a├ž─▒klayabiliriz.
Domain: Cookie nin etki alan─▒n─▒ ayarlamak i├žin kullan─▒l─▒r.
Expires: Cookie nin ge├žerlilik s├╝resini ayarlamak i├žin kullan─▒l─▒r DateTime tipinde de─čer al─▒r.
HasKeys: Cookie i├žersinde alt anahtarlar olup olmad─▒─č─▒n─▒ kontrol etmek i├žin kullan─▒l─▒r.
HttpOnly: Cookie ye client taraf─▒ndan javascript kodlar─▒ taraf─▒ndan ula┼č─▒labilir olmas─▒n─▒ sa─člayan bir property dir.
Item: HttpCookie.Values ├Âzelli─či i├žin bir k─▒sayoldur. Bu ├Âzellik Active Server Pages (ASP) nin ├Ânceki s├╝r├╝mleriyle uyumluluk sa─člamak i├žin kullan─▒l─▒r.
Name: Cookie ye bir isim verir veya cookie ismini okuyabilidi─čimiz property.
Path: Cookie nin sanal adresini atay─▒p okuyabildi─čimiz property
Secure:SSL uzerinden kullanilacak olan cookie ler ile ilgili guvenlik degerlerinin atandigi property dir.HTTPS uzerinden kullanilabilir
Value:Cookie i├žersine yerle┼čtirilecek olan de─čeri atamak i├žin kullan─▒l─▒r.
Values: Cookie i├žersine birden fazla de─čer atayabilmek i├žin kullan─▒l─▒r.

Cookie tan─▒mlayabilmek i├žin HttpCookie s─▒n─▒f─▒ndan bir ├Ârnek al─▒p ┼ču ┼čekilde kullanabiliriz.

HttpCookie MyCookie = new HttpCookie("Cerezim");
MyCookie = Request.Cookies.Get("Cerezim");

Simdilik bu kadar daha sonraki yazilarda ayrintili sekilde nasil cookie tanimlayip kullanabiliriz ornek proje ile destekleyip gosterecegim.
Umarim yararli olur
Bilgiyle Kalin

C# ve PHP 3DESCrypto 691 618 mezo

C# ve PHP 3DESCrypto

Merhaba arkada┼člar
Bu kez sizlere ┼čifreleme y├Ântemi olan 3DES(Triple Data Encryption Algorithm diye ge├žer ancak DES k─▒saltmas─▒ Data Encryption Standard dan gelmektedir.) ┼čifreleme y├Ânteminin kodlar─▒n─▒ vermek istiyorum belki bu yaz─▒ya daha sonra ayr─▒nt─▒l─▒ ┼čekilde bunun ne oldu─ču ile ilgilide bir┼čeyler ekleyebilirim. ­čÖé PHP ve C# i├žin kodlar─▒ a┼ča─č─▒da sizlerle payla┼č─▒yorum

function encrypt($string) {
$key = "xxxxxxxx";

$cipher_alg = MCRYPT_TRIPLEDES;

$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg,MCRYPT_MODE_ECB), MCRYPT_RAND);

$encrypted_string = mcrypt_encrypt($cipher_alg, $key, $string, MCRYPT_MODE_ECB, $iv);
return base64_encode($encrypted_string);
return $encrypted_string;

function decrypt($string) {
$string = base64_decode($string);

$key = "xxxxxxxx";

$cipher_alg = MCRYPT_TRIPLEDES;

$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg,MCRYPT_MODE_ECB), MCRYPT_RAND);

$decrypted_string = mcrypt_decrypt($cipher_alg, $key, $string, MCRYPT_MODE_ECB, $iv);
return trim($decrypted_string);

C# encryption:

using System;
using System.Security.Cryptography;
using System.Text;

public class Crypto3DES
public Crypto3DES()


private System.Text.Encoding encoding;

public string Key
return "xxxxxxxx";

public System.Text.Encoding Encoding
if( encoding == null )
encoding = System.Text.Encoding.UTF8;
return encoding;

encoding = value;

public string Encrypt3DES( string strString )
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();

DES.Key = Encoding.GetBytes( this.Key );
DES.Mode = CipherMode.ECB;
DES.Padding = PaddingMode.Zeros;

ICryptoTransform DESEncrypt = DES.CreateEncryptor();

byte[] Buffer = encoding.GetBytes(strString);

return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));

public string Decrypt3DES( string strString )
DESCryptoServiceProvider DES = new DESCryptoServiceProvider ();

DES.Key = Encoding.UTF8.GetBytes( this.Key );
DES.Mode = CipherMode.ECB;
DES.Padding = PaddingMode.Zeros;
ICryptoTransform DESDecrypt = DES.CreateDecryptor();

byte[] Buffer = Convert.FromBase64String(strString);
return UTF8Encoding.UTF8.GetString( DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length) );

Umar─▒m Yararl─▒ Olur
Bilgiyle Kal─▒n
M.Zeki Osmanc─▒k

PHP’ de WCF Servis ├çal─▒┼čt─▒rmak 800 421 mezo

PHP’ de WCF Servis ├çal─▒┼čt─▒rmak

Merhaba arkada┼člar

WCF Servisi yazd─▒k yay─▒nlad─▒k. C# taraf─▒nda nas─▒l kullanmam─▒z gerekti─či zaten basit olarak servisin ├╝zerindeki ├Ârnek k─▒sm─▒nda yaz─▒yor. Bu yaz─▒da .Net de yazd─▒─č─▒m─▒z bir metodun farkl─▒ bir platform olan PHP taraf─▒nda nas─▒l kullanaca─č─▒m─▒z─▒ k─▒saca g├Âstermek istiyorum. ┬á├ľncelikle kodlara ge├žmeden ├Ânce belirtmeliyim ki server ├╝zerinde SOAPCLIENT kurulu olmal─▒ e─čer kurulu olmazsa WCF servisi kullanamazs─▒n─▒z.

WCF Servis taraf─▒nda a┼ča─č─▒daki gibi bir metot yazd─▒m

    public string AddAccount(string yetkiliAd,string yetkiliSoyad,string firmaAdi,string firmaAdresi){

return string.Format(“You entered: {0}”, yetkiliAd+yetkiliSoyad+firmaAdi+firmaAdresi);


┼×imdi gelelim PHP kodlar─▒na basit olarak kodlar ┼č├Âyle:

// SOAP client WCF servis e ba─članmam─▒z─▒ sa─člayan bir class ve WCF servis ├╝zerindeki metotlar─▒n ├žal─▒┼čt─▒r─▒lmas─▒n─▒ sa─člar.
$wsdl = ‘http://servisadresi/ServisKlasoru/Service.svc?wsdl’;
$soapClient = new SoapClient($wsdl, array(‘cache_wsdl’ => 0));// Yaz─▒lan WCF servis ├╝zerinde AddAccount ad─▒nda bir metot var ve onun i├žersine parametreleri g├Ânderiyoruz.
$AccountParameter = new stdClass();
$AccountParameter->yetkiliAd = addslashes($this->ucwords_tr($_POST[Ad]));
$AccountParameter->yetkiliSoyad = addslashes($this->ucwords_tr($_POST[Soyad]));
$AccountParameter->firmaAdi = addslashes($this->ucwords_tr($_POST[FirmaUnvan]));
$AccountParameter->firmaAdres = addslashes($this->ucwords_tr($_POST[FirmaAdres]));
// ve WCF servis ├╝zerindeki AddAccount metodunu ├žal─▒┼čt─▒r─▒m sonucu bir de─či┼čkene aktar─▒yor.
$result = $soapClient->AddAccount($AccountParameter);
catch (SoapFault $fault)
//echo “Fault code: {$fault->faultcode}” . NEWLINE;
//echo “Fault string: {$fault->faultstring}” . NEWLINE;
if ($soapClient != null)
$soapClient = null;
$soapClient = null;

//echo ”



//echo ”


//echo “Return value: {$result->AddAccountResult}” . NEWLINE;

Umar─▒m yararl─▒ olmu┼čtur ­čśë

Bilgiyle Kal─▒n

M.Zeki Osmanc─▒k

WCF Service IIS Ayarlar─▒ 1024 575 mezo

WCF Service IIS Ayarlar─▒

Merhaba arkada┼člar

Bir ├Ânceki yaz─▒da┬áWCF servisin ne oldu─ču ile alakal─▒ bilgi vermi┼čtim ┼čimdi ise yazd─▒─č─▒m─▒z bir servisin IIS ├╝zerinde nas─▒l yay─▒nlanaca─č─▒ ├╝zerinde dural─▒m. ├ľncelikle yay─▒n yapaca─č─▒m─▒z server ├╝zerinde IIS y├╝kl├╝ olmas─▒ gerekmekte. IIS ├╝zerinden baz─▒ ayarlar yapaca─č─▒z ve dosyalar─▒m─▒z─▒ yerle┼čtirip yay─▒na ba┼člayaca─č─▒z.

Dosyalar demi┼čken WCF Service projesini yaz─▒p tamamlad─▒ktan sonra projeyi Publish etmemiz gerekiyor. Publish i┼člemi servisi yay─▒na haz─▒rlamak anlam─▒na geliyor ve yapmas─▒da ├žok basit sadece projeniz ├╝zerinde sa─č click sonra publish se├žmeniz yeterli.

┼×imdi server ├╝zerinde IIS Y├Âneticisini a├ž─▒yoruz.



Daha sonra kullanaca─č─▒m─▒z Framework versiyonunda bir Application Pool ekliyoruz



Bizim servisimiz .Net Framework 4.0 kulland─▒─č─▒ i├žin uygulama havuzumuz Framework 4.0 se├žip olu┼čturuyoruz.


Bu uygulama havuzu i├žersinede bir web sitesi ekliyoruz ki yay─▒nlayaca─č─▒m─▒z servisimizi i├žersine yerle┼čtirebilelim ­čÖé


Bu websitesinin yay─▒nlanaca─č─▒ fiziksel adresi se├žmemiz gerekiyor.







Web sitesini ekledikten sonra ve fiziksel yolunu belirttikten sonra ekledi─čimiz web sitesine bir Application (uygulama) ekliyoruz.



Uygulamam─▒z i├žinde ayn─▒ ┼čekilde bir fiziksel yol se├žtikten sonra yay─▒na haz─▒r─▒z.



Art─▒k servisimiz yay─▒na haz─▒r tek yapmam─▒z gereken server in adresini yazmak ve belirtti─čimiz servisin klas├Âr ad─▒ ve dosya ad─▒n─▒ yaz─▒p servisimizi g├Âr├╝nt├╝lemek ­čśë

http://serveradres veya ip adresi/ServisKlasoru/Service.svc

Untitled picture


Umar─▒m yararl─▒ olur

Bilgiyle Kal─▒n

M.Zeki Osmanc─▒k

WCF Service Nedir? 448 274 mezo

WCF Service Nedir?

Merhaba arkada┼člar

WCF Service nedir konusu ├╝zerinde bir ka├ž basit a├ž─▒klama yapmak istiyorum. Bilindi─či gibi microsoft bug├╝ne kadar da─č─▒t─▒k uygulamalar─▒n─▒n (Distrubuted Applications) geli┼čtirilebilmesi i├žin┬á┬á.Net Remoting,┬áXML Web Servisleri, MSMQ,COM+ gibi sistemleri geli┼čtirmi┼čtir. ┬áWCF Service de temel olarak bu sistemlerin hepsinin yeteneklerine sahip ve tam SOA (Service Oriented Architecture – Servis Y├Ânelimli Mimari) deste├╝, sa─člayan g├╝├žl├╝ bir Framework API si olarak a├ž─▒klanabilir.

WCF iki ├Ânemli ├Âzellik ile birlikte kar┼č─▒m─▒za ├ž─▒kmakta: bunlardan birincisi Microsoft taraf─▒ndaki servislerin farkl─▒ platformlar taraf─▒ndan ele al─▒nabilmesidir (Interoperability) . B├Âylece karma┼č─▒k .Net tiplerini ├Âzel olarak Java ,Com gibi modelleri destekleyen platformlara da─č─▒tabiliriz. Bu y├╝zdende Linuz ,Unix gibi sistemler servislerimizin birer t├╝keticisi olabilirler.

─░kinci ├Âzellik ise Windows k─▒sm─▒nda yap─▒lan da─č─▒t─▒k modeller aras─▒nda var olacak olan entegrasyonlar─▒n─▒n tek bir ├žat─▒ alt─▒nda toplanabilmesidir. Bu ├Âzellik d─▒┼č─▒nda WCF Service ┬á, CLR tiplerini birer servis olarak sunabilmemizi ve servisleri birer CLR tipi olarak kullanabilmemizi sa─člayan bir mimari sunmaktad─▒r.

WCF Service ‘e ayn─▒ makine i├žinde ayn─▒ process te yer alan farkl─▒ bir Application Domain┬á├╝zerinden ,ayn─▒ makinede yer alan farkl─▒ bir process i├žindeki farkl─▒ Application Domain ├╝zerinden┬á, farkl─▒ bir makinedeki process i├žinde yer alan Application Domain┬á├╝zerinden ula┼čabiliriz.┬áClient’ lar hangi Application Domain ├╝zerinde olursa olsunlar servis ile olan ileti┼čimlerini proxy nesnesi ├╝zerinden sa─člamak zorundad─▒rlar.

─░ngilizce kaynaklarda WCF Service ‘in ABC sinden s─▒k├ža bahsedilmektedir. Bu ABC nedir alfabemi diye sorarsan─▒z de─čil ­čśÇ ABC Addresses Bindings Contracts anlam─▒na gelen ve WCF in ├žekirde─činde yer alan ├Ânemli kavramlard─▒r.

Addresses : Bulunan her servis benzersiz bir adrese sahip olmal─▒d─▒r ├ľzellikle bir servis adresi servisin teri ta┼č─▒ma protokol├╝ bilgilerinden olu┼čmal─▒d─▒r. Servis yeri derken kastetmeye ├žal─▒┼čt─▒─č─▒m ┼čeyler asl─▒nda : Bilgisayar ad─▒, site ad─▒ i network , ileti┼čim portu, pipe queue, URI adlar─▒ ve kesin bir path adresi ┬á olarak s─▒ralanabilir. Burada kullan─▒lan ta┼č─▒ma protokolleri ise HTTP , TCP, P2P , IPC , MSMQ olarak soralanabilir.

Contracts :┬áBir servisin ne i┼č yapt─▒─č─▒n─▒ bilmek ├Ânemlidir. ├ľzellikle client’ lar─▒n ihtiya├ž duydu─ču proxy s─▒n─▒flar─▒n─▒n yaz─▒lmas─▒nda ├Ânemli bir konudur. Bu sebeple WCF Service ├╝zerinde t├╝m servisler d─▒┼č ortama bir Contract sunmaktad─▒r. Genel manada 4 tane contract tipi vard─▒r. bunlar

Service Contract : Serviste hangi operasyonlar─▒n var oldu─ču ile alakal─▒ s├Âzle┼čmedir.

Data Contract :Servislerden client ‘lara giden ve client ‘ lardan servise gelen veri tiplerini tan─▒mlayan s├Âzle┼čmedir. Int String gibi bilinen tipler i├žin bu s├Âzle┼čmeler Implicit yani bilin├žsiz olarak haz─▒rlan─▒r. Ancak karma┼č─▒k tiplerde ve kendi olu┼čturdu─čumuz tiplerde Explicit olarak tan─▒mlanmalar─▒ gerekir. Bu sayede Java vb platformlara kendi tan─▒mlad─▒─č─▒m─▒z s─▒n─▒f─▒ o platformlar─▒n anlayaca─č─▒ ┼čekilde sunmu┼č oluyoruz.

┬áFault Contract : Servis taraf─▒ndan hangi hatalar─▒n f─▒rlat─▒labilece─čini ve┬ábu servisi kullanan client a bu hatalar─▒n nas─▒l aktar─▒laca─č─▒n─▒ tan─▒mlayan s├Âzle┼čmedir.

Message Contract : Servislerin mesajlar─▒ ile ileti┼čimini sa─člayan s├Âzle┼čmedir.

Bindings :Bindings temek olarak servisleri ile nas─▒l ileti┼čim kurulaca─č─▒n─▒ tan─▒mlamak i├žin kullan─▒l─▒rlar. Bir bindings tip ┬átransport type , protocok ve data encoding bilgilerini bildirir. Bu bilgiler asl─▒nda servis y├Ânelimli mimari modelde kullan─▒labilecek olan senaryolar d├╝┼č├╝n├╝lerek olu┼čturulurlar bu y├╝zdende WCF bu ├Ânceden bilinen senaryolar─▒ kullanabilmek i├žin gerekli ba─člay─▒c─▒ tipleri ├Ânceden bildirmi┼čtir bunlar :


Binding Tipi KonfigurasyonElementi Ta┼č─▒ma ├çe┼čidi(Transport Type) Veri ├ç├Âz├╝mlemesi(Data Encoding) PlatformDeste─či


BasicHttpBinding <basicHttpBinding> HTTP / HTTPS Text Var
NetTcpBinding <netTcpBinding> TCP Binary Yok
NetPeerTcpBinding <netPeerTcpBinding> P2P Binary Yok
NetNamedPipeBinding <netNamedPipeBinding> IPC Binary Yok
WSHttpBinding <wsHttpBinding> HTTP/HTTPS Text/MTOM Var
WSFederationBinding <wsFederationHttpBinding> HTTP/HTTPS Text/MTOM Var
NetMsmqBinding <netMsmqBinding> MSMQ Binary Yok
MsmqIntegrationBinding <msmqIntegrationBinding> MSMQ Binary Var
WSDualHttpBinding <wsDualHttpBinding> HTTP Text/MTOM Var

Buradaki tiplerden hangisini se├žece─čimiz, geli┼čtirece─čimiz SOA (Service Oriented Architecture) modelindeki ihtiya├žlar─▒m─▒z do─črultusunda belirlenebilirler.

┼×imdi isterseniz bir WCF Service projesi a├žarak inceleyelim.

WCF Service projesi a├žt─▒─č─▒m─▒zda bizi kar┼č─▒layan ├Ânemli 3 dosya vard─▒r bunlar IService.cs ,Service.cs ,web.config dosyalar─▒d─▒r bu dosyalarda neler var bir bakal─▒m.


Bu interface servis i├žersinde kullan─▒lacak olan metotlar─▒ property leri ve bunlar─▒n contractlar─▒n─▒n belirtildi─či dosyad─▒r ­čśë

using System;using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.ServiceModel.Web;

using System.Text;

namespace WcfService1


// NOTE: You can use the “Rename” command on the “Refactor” menu to change the interface name “IService1” in both code and config file together.


public interface IService1



string GetData(int value);


CompositeType GetDataUsingDataContract(CompositeType composite);

// TODO: Add your service operations here


// Use a data contract as illustrated in the sample below to add composite types to service operations.


public class CompositeType


bool boolValue = true;

string stringValue = “Hello “;


public bool BoolValue


get { return boolValue; }

set { boolValue = value; }



public string StringValue


get { return stringValue; }

set { stringValue = value; }







Service.cs ise i┼člemlerimizin IService.cs dosyas─▒ndaki gibi tan─▒mlanm─▒┼č olan metotlar i├žersine yazaca─č─▒m─▒z dosyam─▒zd─▒r.

using System;using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.ServiceModel.Web;

using System.Text;

namespace WcfService1


// NOTE: You can use the “Rename” command on the “Refactor” menu to change the class name “Service1” in code, svc and config file together.

// NOTE: In order to launch WCF Test Client for testing this service, please select Service1.svc or Service1.svc.cs at the Solution Explorer and start debugging.

public class Service1 : IService1


public string GetData(int value)


return string.Format(“You entered: {0}”, value);


public CompositeType GetDataUsingDataContract(CompositeType composite)


if (composite == null)


throw new ArgumentNullException(“composite”);


if (composite.BoolValue)


composite.StringValue += “Suffix”;


return composite;






<?xml version=”1.0″?><configuration>


<compilation debug=”true” targetFramework=”4.0″ />






<!– To avoid disclosing metadata information, set the value below to false before deployment –>

<serviceMetadata httpGetEnabled=”true”/>

<!– To receive exception details in faults for debugging purposes, set the value below to true.┬á Set to false before deployment to avoid disclosing exception information –>

<serviceDebug includeExceptionDetailInFaults=”false”/>




<serviceHostingEnvironment multipleSiteBindingsEnabled=”true” />



<modules runAllManagedModulesForAllRequests=”true”/>


To browse web app root directory during debugging, set the value below to true.

Set to false before deployment to avoid disclosing web app folder information.


<directoryBrowse enabled=”true”/>




Umar─▒m yararl─▒ olur.

Bilgiyle Kal─▒n

M.Zeki Osmanc─▒k


Linq To SQL _ Insert Update Delete 570 571 mezo

Linq To SQL _ Insert Update Delete

Merhaba arkada┼člar

Bir ├Ânce ki makalede sizlere LinqToSql ile nas─▒l Select sorgular─▒ ├žal─▒┼čt─▒rabilece─činiz ile ilgili baz─▒ bilgiler vermi┼čtim. Bu sefer ise Insert Update ve Delete i┼člemleri ile ilgili baz─▒ bilgiler vermek istiyorum. Projemiz i├žersine dbml dosyas─▒n─▒ ekledi─čimizi varsayarak devam etmek istiyorum. Daha ├Ânceki ├Ârnekteki form tasar─▒m─▒na ek olarak sadece 3 Button 2 Textbox ve Label nesnelerini ekleyip bu tasar─▒m ├╝zerinden devam edece─čim.


Insert i┼člemini ger├žekle┼čtirebilmek i├žin Kaydet butonumuzun Click olay─▒ i├žersine sadece ┼ču kodlar─▒ yazmam─▒z yeterli olacakt─▒r.

NorthwindDataContext db = new NorthwindDataContext();
Category eklenecek = new Category();
eklenecek.CategoryName = TextBox1.Text;
eklenecek.Description = TextBox2.Text;

Bu i┼člemde bir dataContext ├Ârne─či olu┼čturduktan sonra Northwind ├╝zerine insert i┼člemi i├žin gerekli olan alanlar─▒ belirtti─čimiz Category tipindeki nesneyi doldurup bu nesneyi t├╝m bilgileri ile birlikte kaydetmesini s├Âyl├╝yoruz.

G├╝ncelleme ve silme i┼člemlerinden ├Ânce ufak bir noktaya de─činmek san─▒r─▒m yerinde olacakt─▒r. SQL sorgular─▒nda yapt─▒─č─▒m─▒z gibi bizim burada mutlaka bir ID vermemiz gerekiyor yani g├╝ncellemek istedi─čimiz verinin kesin adresini yolunu belirtmeliyiz. Biliyorsunuz ki SQL kodlar─▒ ile Update veya Delete komutlar─▒ yazd─▒─č─▒n─▒zda ÔÇťWhereÔÇŁ ile ID sini belirtmezseniz t├╝m kay─▒tlar i├žin g├╝ncelleme veya silme i┼člemini ger├žekle┼čtirir. Bu y├╝zden ├Ânce nas─▒l ID belirtiriz ona bakal─▒m.┬á ID yazan yere 3 5 yazmayaca─č─▒z tabi ki. DataGridView ├╝zerinden bir veri se├žip onu yerle┼čtirdi─čimiz Textbox ve Label lar ├╝zerine yazd─▒rd─▒ktan sonra i┼člemlerimize devam edece─čiz.

Kay─▒t Se├žme ─░┼člemi

Bunun i├žin DataGridView ├╝zerine listeledi─čimiz kay─▒tlardan herhangi bir tanesine ├žift t─▒klad─▒─č─▒m─▒zda i┼čin ger├žekle┼čmesi i├žin CellContentDoubleClick olay─▒ i┼čimizi g├Ârebilir ve i├žersine yazmam─▒z gereken kodlar ise ┼čunlar:

Bu ad─▒mdan sonra art─▒k listelenen kay─▒tlar aras─▒ndan birine ├žift t─▒klad─▒─č─▒m─▒zda t├╝m bilgileri text ve label nesnelerine yaz─▒lacak bizde g├╝ncelleme veya silme yaparken bu bilgilerden yararlanabiliriz.

NorthwindDataContext db = new NorthwindDataContext();
Category secilecek = db.Categories.FirstOrDefault(x => x.CategoryID == 
lblID.Text = secilecek.CategoryID;
txtName.Text = secilecek.CategoryName;
txtDesc.Text = secilecek.Description;


G├╝ncelle butonumuzun Click olay─▒na ise ┼ču kodlar─▒ eklememiz yeterli :

NorthwindDataContext db = new NorthwindDataContext();
Category guncellenen = db.Categories.FirstOrDefault(x=>x.CategoryID ==Convert.ToInt32(lblID.Text));
guncellenen.CategoryName = txtName.Text;
guncellenen.Description = txtDesc.Text;

Burada daha ├Ânce se├žip bir label ├╝zerine yazd─▒rd─▒─č─▒m─▒z ID yi kullanarak TextBox lar ├╝zerindeki g├╝ncel verileri al─▒p update i┼člemini ger├žekle┼čtiriyoruz.

Ayn─▒ ┼čekilde delete i┼člemi i├žinde yazmam─▒z gereken kodlar ├žok basit ┼č├Âyle ki :

NorthwindDataContext db = new NorthwindDataContext();
Category silinen = db.Categories.FirstOrDefault(x => x.CategoryID == int.Parse(lblID.Text));

Birde burada her i┼člemden sonra kulland─▒─č─▒m─▒z datagridview i├žersine bilgileri dolduran Doldur metodu var onuda sizlerle payla┼čay─▒m.

db = new NorthwindDataContext();
var sonuc = from x in db.Categories
select new
dataGridView1.DataSource = sonuc;

Bu kodlar─▒ butonlar─▒m─▒z─▒n Click olaylar─▒na yazd─▒ktan sonra herhangi bir hataya kar┼č─▒ ├Ânlem almad─▒─č─▒m─▒z i├žin i┼člem s─▒ram─▒z ┼č├Âyle olmal─▒ ├Âncelikle form a├ž─▒lacak ve kay─▒tlar─▒m─▒z s─▒ralanacak , ard─▒ndan bir kay─▒t eklemek i├žin textboxlar doldurularak Kaydet butonuna bas─▒lacak ve Doldur metodu ile kay─▒tlar yeniden datagridview ├╝zerinde g├Âr├╝nt├╝lenecek ard─▒ndan bir kayda ├žift t─▒klayarak bilgilerini text ve label ├╝zerine yazd─▒raca─č─▒z ve G├╝ncelle butonu ile g├╝ncelleme ve Sil butonu ile se├žilen kayd─▒n silinme i┼člemlerini ger├žekle┼čtirece─čiz.

Umar─▒m yararl─▒ olur

Bilgiyle Kal─▒n

M.Zeki Osmanc─▒k


LinqToSQL _ Select 992 608 mezo

LinqToSQL _ Select

Merhaba arkada┼člar bu yaz─▒m─▒zda sizlere LinqToSQL nesnesini en basit ┼čekilde nas─▒l kullan─▒r─▒z bunu g├Âstermek istiyorum. ├ľncelikle LinqToSQL nesnesini kullanabilmek i├žin ilk yapmam─▒z gereken ┼čey projemiz i├žersine bu nesneyi eklemektir.

Bu nesneyi ekledi─čimizde ve Server Explorer ├╝zerinde ekliyece─čimiz bir veritaban─▒ varsa buradan tablolar─▒ s├╝r├╝kleyip b─▒rakt─▒─č─▒m─▒zda kendisi otomatik olarak bu tablolar ile alakal─▒ baz─▒ class lar─▒ olu┼čturur bize sadece kullanmak kal─▒r ­čśë

Bu i┼člemi tamamlad─▒ktan sonra geldi s─▒ra kod yazma i┼člemine acaba bu LinqToSQL den nas─▒l veri ├žekip form ├╝zerindeki nesnelerde g├Âsterebiliriz.

Select sorgusu nas─▒l yap─▒l─▒r ?

Select i┼člemini farkl─▒ ┼čekillerde yapabilirsiniz bunun bir ka├ž farkl─▒ yolu mevcut. Hepsinde ayn─▒ sonucu al─▒r─▒z yani ÔÇťSELECT * FROM CATEGORIES ÔÇŁ sorgusunun sonucunu al─▒r─▒z ­čśë

NorthwindDataContext db = new NorthwindDataContext();var sonuc = from x in db.Categoriesselect x;dataGridView1.DataSource = sonuc;


NorthwindDataContext db = new NorthwindDataContext();var sonuc = from x in db.GetTable<Category>()select x;dataGridView1.DataSource = sonuc;


NorthwindDataContext db = new NorthwindDataContext();dataGridView1.DataSource =  db.GetTable<Category>();

Select sorgusuna Where kriteri ekleme i┼člemi ?

Select sorgusune Where kriterini eklemek i├žin yani ÔÇťSELECT * FROM CATEGORIES WHERE CATEGORYID = 1ÔÇŁ sorgusunun LinqToSQL de yaz─▒lmas─▒ i┼člemide ┼ču ┼čekillerde olabilir.

NorthwindDataContext db = new NorthwindDataContext();var sonuc = from x in db.Categorieswhere x.CategoryID ==1select x;dataGridView1.DataSource = sonuc;


NorthwindDataContext db = new NorthwindDataContext();var sonuc = from x in db.GetTable<Category>()where x.CategoryName.StartsWith(“B”)select x;dataGridView1.DataSource = sonuc;

Gelen sorguyu listeleme i┼člemi yani Order By anahtar kelimesinin yapt─▒─č─▒ i┼či nas─▒l yapaca─č─▒z ┼čimdi k─▒sa bir kodla bunu g├Ârelim ­čśë

┬á┬á┬á┬á┬á┬á NorthwindDataContext db = new NorthwindDataContext();var sonuc = from x in db.GetTable<Category>()where x.CategoryName.StartsWith(“B”)orderby x.CategoryID ascendingselect x;dataGridView1.DataSource = sonuc;


┬á┬á┬á┬á┬á┬á NorthwindDataContext db = new NorthwindDataContext();var sonuc = from x in db.Categorieswhere x.CategoryName.StartsWith(“B”)orderby x.CategoryID descendingselect x;dataGridView1.DataSource = sonuc;


Bu kodlar sadece select i├žin kullanabilece─čimiz basit kodlar. Bir sonraki yaz─▒da Inner Join, Left, Right Join gibi yap─▒lar─▒n nas─▒l kullan─▒labilece─čine bakaca─č─▒z.

Umar─▒m Yararl─▒ Olur

Bilgiyle Kal─▒n.

M.Zeki Osmanc─▒k

S─▒n─▒rs─▒z A─ča├ž Yap─▒s─▒ ve Treeview Kullan─▒m─▒ 563 595 mezo

S─▒n─▒rs─▒z A─ča├ž Yap─▒s─▒ ve Treeview Kullan─▒m─▒

Merhaba arkada┼člar

Bu yaz─▒mda ├žok├ža bahsedilen ├žok├ža kullan─▒lacak olan bir kontrol yap─▒s─▒ ve bunun database den gelen verilerle nas─▒l ├žal─▒┼čt─▒─č─▒n─▒ g├Âstermek isterim sizlereÔÇŽ

Bahsetti─čimiz kontrol├╝m├╝z Treeview denilen bir nesne bu nesne bizlere a─ča├ž yap─▒s─▒ bulunan bilgileri rahatl─▒kla ve tek ekranda g├Ârmemizde bizlere kolayl─▒k sa─člayan bir kontrol peki ama nas─▒l bu kontrole bir┼čeyler ekler kullan─▒labilir hale getirebilirizÔÇŽ

├ľncelikle bir DB ye ve tabloya ihtiyac─▒m var s─▒ras─▒ gelmi┼čken birde SQL tablosunda s─▒n─▒rs─▒z a─ča├ž yap─▒s─▒ndan bahsetmeden olmaz heralde.┬á ┼×ekildeki gibi bir veritaban─▒ olu┼čturdumÔÇŽ


Buradaki mant─▒k asl─▒nda basit e─čer bir kay─▒t root kay─▒tsa yani k├Âk kay─▒tsa o zaman AltKategoriID si NULL olmal─▒d─▒r. E─čer girdi─čimiz kategori ba┼čka bir kategori alt─▒nda duruyorsa o halde hangi kategori ├╝st ise AltKategoriID sine o kayd─▒n ID de─čerini girmeliyiz. Zaten resimdeki birbirine ba─čl─▒ yap─▒da bunu temsil eder. Birde girdi─čimiz verileri inceleyin bakal─▒m nas─▒l bir┼čey varm─▒┼č ­čśÇ

Burada Elektronik root yani ana kategori Bilgisayar onun alt─▒nda bulundu─ču i├žin Bilgisayar kayd─▒n─▒n AltKategoriID si Elektronik kayd─▒n─▒n ID sine e┼čit Bilgisayar─▒n alt─▒nda olanlarda Bilgisayar kayd─▒n─▒n ID sine sahip olacakt─▒r b├Âylelikle alt alta uzay─▒p giden s─▒n─▒rs─▒z bir a─ča├ž yap─▒s─▒na sahip olabiliriz.

Peki tablomuz tamam verilerimizide girdik e hani Treeview┬á derseniz onuda ┼č├Âyle ├Âzetleyelim

Yeni bir Windows formuma Treeview ve button nesnemi yerle┼čtirdim

Ardından button nesnesinin Click olayına gelerek dedim ki  :

DataRelation baglanti;private void btnListele_Click(object sender, EventArgs e){SqlConnection cnn = new SqlConnection(“Data Source = .; Initial Catalog = Deneme; User = sa; Password = 1234567?;”);SqlDataAdapter adp = new SqlDataAdapter(“Select * From Kategoriler”,cnn);DataSet ds = new DataSet();



baglanti = new DataRelation(“baglan”,ds.Tables[“Kategoriler”].Columns[“KategoriID”],





foreach (DataRow dr in ds.Tables[“Kategoriler”].Rows)


if (dr[“AltKategoriID”] == DBNull.Value)


TreeNode root = new TreeNode(dr[“KategoriAdi”].ToString());

root.Tag = dr[“KategoriID”];








Kodlara bakacak olursak klasik bir ADO.net ile verilerimi al─▒p bir DATASET e eklemi┼čim biliyorsunuzki DATASET nesnesi i├žine birden

fazla DATATABLE nesnesi bar─▒nd─▒rabilen bir nesne yani sanal veritaban─▒ gibide d├╝┼č├╝nebiliriz asl─▒nda. Peki database de ba─člant─▒lar olurda bunda olmazm─▒ ? Olmam─▒ tabikide olur bu ba─člant─▒y─▒da DATARELATION nesnesi sa─člar i┼čte tam burada bende verilerimi ├žektikten sonra i├žindeki hangi veri ile hangi verinin e┼čle┼čece─či yani hangisinin ana ID hangisinin ona ba─čl─▒ olan Altkategori oldu─čunu belirtip ba─člant─▒m─▒ tamamlad─▒m. Ard─▒ndan bir foreach ile Dataset i├žersine att─▒─č─▒m Datatable i├žindeki sat─▒rlar─▒ tek tek almaya ba┼člad─▒m ve bu foreach i├žersinde sadece AltKategorisi NULL olanlar─▒ ald─▒m yani Root olan k├Âk olan kay─▒tlar─▒ ald─▒m ve Treeview nesneme ekledim.

Peki bunun alt─▒nda bi┼či yokmu ? Alt─▒ndakini hatta onun alt─▒ndaki kay─▒tlar─▒ nas─▒l alaca─č─▒z derseniz ondada bir metotun yard─▒m─▒n─▒ isteyip o metodu kendi i├žersinde ├ža─č─▒rarak i┼čimizi ├ž├Âzece─čizÔÇŽ


private void AltKategorileriGetir(DataRow dr,TreeNode pNode){foreach(DataRow row in dr.GetChildRows(baglanti)){TreeNode childNode = new TreeNode(row[“KategoriAdi”].ToString());childNode.Tag = row[“KategoriID”];pNode.Nodes.Add(childNode);





Bu metodu ├žal─▒┼čt─▒r─▒rkende biraz once kontrol etti─čimiz root kayd─▒ ve olu┼čturulan TreeNode nesnesini parametre olarak yollad─▒ktan sonra olu┼čturdu─čumuz ba─člant─▒ nesnesi ile Altkategorideki de─čerleri kontrol ediyoruz ve varsa yine TreeNode olu┼čturup mevcut Node alt─▒na ekliyoruz. Vee sonra kategori ve alt─▒ndaki elemanlar─▒ tek tek kar┼č─▒ma geliyor

Umar─▒m yararl─▒ olur

G├Âr├╝┼čmek ├ťzere

M.Zeki Osmanc─▒k


GDI 2 _ Grafik Çizimi 426 487 mezo

GDI 2 _ Grafik Çizimi

Merhaba arkada┼člar

GDI ile ilgili ├Ânceki yaz─▒m─▒zda neyin nas─▒l kullan─▒laca─č─▒n─▒ g├Ârm├╝┼čt├╝k bu sefer bu GDI metotlar─▒n─▒ kullanarak nas─▒l hesaplamalar yapar─▒z. Se├žim sonu├žlar─▒nda hep g├Âr├╝r├╝z bir pasta dilimi ├╝zerinde partilerin oylar─▒ g├Âr├╝n├╝r ve y├╝zde olarak pasta grafikde bir dilim kaplarlar . Bakal─▒m bizim partilerden hangisi ne kadar oyla pastan─▒n neresinde duracak ???

├ľncelikle WindowsForm uygulamam─▒z ├╝zerine 2 TextBox 1 Button ve 1 PictureBox at─▒yoruz.

Bu g├Âr├╝nt├╝y├╝ elde ettikten sonra yapmam─▒z gerek pek de bir┼čey kalmad─▒ asl─▒nda sadece kod blo─čunu a├ž─▒p yazmak kal─▒yor ­čśÇ

string[] partiler = new string[10];int[] oylar = new int[10];int siraNo, toplamOy;

├ľncelikle yukardaki gibi de─čerlerimi tutaca─č─▒m dizilerimi ┬áve hesaplama yapabilmek i├žinse de─či┼čkenlerimi GLOBAL olarak tan─▒mlad─▒m.

Daha sonra buton i├žersinde de─čerlerimi al─▒p bunlar─▒ grafiksel olarak picturebox i├žersine ├žizdirece─čim.

├ľncelikle 10 elemanl─▒ bir dizi olu┼čturdu─čum i├žin dizinin boyutundan ├žok eleman girilmesin diye bir kontrol yap─▒yorum. Ard─▒ndan oylar i├žersine de─čer eklerken int de─čerlerin girildi─činden emin oluyorum…

┬á┬á┬á┬á┬á┬á┬á┬á┬á┬á┬á if (siraNo == 10){MessageBox.Show(“10 partiden fazla olamaz???”);return;}try


oylar[siraNo] = int.Parse(textBox2.Text);


catch (Exception)


MessageBox.Show(“Oylarda Hata Var”);




Hem partiler hemde oylar ayn─▒ indeks numaralar─▒na yazd─▒r─▒lacak .

            partiler[siraNo] = textBox1.Text;toplamOy += oylar[siraNo];siraNo++;Graphics grp = this.pictureBox1.CreateGraphics();grp.Clear(pictureBox1.BackColor);

Random rnd = new Random();

int i, basAci=0,yayAci ,boy=0;

Color renk;

HatchBrush firca;

Toplam oy say─▒s─▒n─▒ hesapl─▒yoruz. ┬áArd─▒ndan nesnelerimizi tan─▒ml─▒yoruz. ┬áPicturebox ├╝zerine ├žizim yapabilmek i├žin Graphics nesnesi olu┼čturuyoruz. Picturebox da ne varsa siliyoruz. Color de─či┼čkeni ve desenli ├žizim i├žin HatchBrush nesnesi olu┼čturuyoruz.

Index numaras─▒na g├Âre t├╝m dizi i├žersindeki elemanlar─▒ al─▒p grafiksel olarak ├žizebilmek i├žin bir for d├Âng├╝s├╝ olu┼čturuyoruz.

            for (i = 0; i <= siraNo-1; i++){yayAci = 360 * oylar[i] / toplamOy;renk = Color.FromArgb(rnd.Next(255), rnd.Next(255), rnd.Next(255));firca = new HatchBrush((HatchStyle)rnd.Next(50), renk);grp.FillPie(firca,0,80,200,200,basAci,yayAci);


grp.DrawString(“% ” + boy.ToString(), new Font(“Tahoma”, 8, FontStyle.Bold), Brushes.Black, 5, 80 + i * 20);

grp.FillRectangle(firca, 260, 80 + i * 20, 18, 18);


grp.DrawString(partiler[i] + ” = ” + oylar[i].ToString(), new Font(“Tahoma”, 8, FontStyle.Bold), Brushes.Black, 290, 80 + i * 20);

basAci += yayAci;



├çizdirece─čimiz FillPie nesnesinin ka├ž derecelik bir a├ž─▒ ile ├žizilece─čini hesaplamak i├žin yay _aci de─či┼čkenini kullanaca─č─▒z. ┬áRandom renk elde edebilmek i├žin Color.FromArgb metodunu kullanarak rastgele renk de─čerlerini veriyoruz. HatchBrush ├╝zerindede random olarak desen gelebilmesi i├žin gerekli tan─▒mlamay─▒ yap─▒yoruz. Ard─▒ndan k├╝├ž├╝k bir kare rengin hangi partiye ait oldu─čunu g├Âstermek i├žin hemen yan─▒nada partinin ad─▒ ve oy say─▒s─▒┬á yazd─▒rd─▒ktan sonra en son tan─▒mlad─▒─č─▒m ba┼člang─▒├ž a├ž─▒s─▒ bas_Aci de─či┼čkenini ├žizdi─čim ┼čeklin yay_Aci de─čeri kadar artt─▒r─▒p yeni ├žizilecek olan pie i├žin ba┼člang─▒├ž konumunu belirliyoruz.

Ve son olarak kar┼č─▒m─▒za ├ž─▒kan g├Âr├╝nt├╝ :

B├Âylelikle Graphics nesnesindeki de─čerlerin nas─▒l i┼čimize yarayaca─č─▒ biraz daha kafam─▒zda oturmu┼č olur umar─▒m…

G├Âr├╝┼čmek ├ťzere.


GDI 401 376 mezo


Merhaba arkada┼člar

GDI┬á = Graphical Design Interface┬á ile ilgili ufak bir bilgi vermek istiyorum sizlere. GDI, Windows uygulamalar─▒ ├╝zerinde ├žizim i┼člemleri ger├žekle┼čtirmemize olanak tan─▒yan s─▒n─▒flard─▒r.

Bu s─▒n─▒flar ile Windows formlar ├╝zerine veya print nesneleri ile ka─č─▒t ├╝zerine baz─▒ ├žizimler yapabilmemiz m├╝mk├╝n.

├ľncelikle bir ├žizim yapabilmek i├žin de ilk gereken bir ka─č─▒t yada ├žizim yap─▒lacak aland─▒r ├Âncelikle bunu belirtmemiz gerekiyor

Form ├╝zerine ├žizim yapabilmek i├žin:Graphics grp = this.CreateGraphics();


PictureBox ├╝zerine ├žizim yapabilmek i├žin:

Graphics grp = pictureBox1.CreateGraphics();


├çizim alan─▒m─▒z─▒ olu┼čturduktan sonra ile form veya picturebox ├╝zerine ne ├žizdirece─čimizi se├žmemiz gerekiyor ama bunu se├žmeden ├Âncede ├žizmek i├žin gerekli olan kalem veya i├ži dolu bir ┼čekil ├žizeceksek f─▒r├ža gerekiyor. Bunu da ┼ču ┼čekilde tan─▒mlayabiliriz;

Pen kalem = new Pen(Color.Blue);kalem.Width = 5;


Brush firca = new SolidBrush(Color.Red) ;


Bu ┼čekilde tan─▒mlad─▒─č─▒m─▒zda kalem ve fircanin ├Âzelliklerini de─či┼čtirebilir durumda oluyoruz. Kalemin kal─▒nl─▒─č─▒ vs gibi ├Âzelliklerini ayarlayabiliyoruz. Ya bunlara ihtiyac─▒m─▒z yoksa bunlarla u─čra┼čmadan nas─▒l yapar─▒z derseniz onun ├ž├Âz├╝m├╝de ┼ču ┼čekilde…




Hemen belirteyim bu ┼čekilde kullan─▒m tek ba┼č─▒na m├╝mk├╝n olmuyor ancak gerekli kodlar i├žersinde bu ┼čekilde kullanabilirsiniz biraz a┼ča─č─▒da bunun ├Ârneklerini g├Âreceksiniz zaten ­čśë

├çizim alan─▒ tamam kalem tamam fir├ža tamam eee ne kald─▒ geriye ??? Sadece ├žizmek kald─▒ ­čśë

├çizim yapabilmek i├žinde ilk ba┼čta ├Ârne─čini (instance) ald─▒─č─▒m─▒z Graphics nesnesini kullanaca─č─▒z. Ve i├žersindeki ├žizim metotlar─▒ ile form ├╝zerine ┼čekiller ├žizece─čiz….

grp.DrawLine(Pen nesnesi, X1, Y1, X2, Y2);grp.DrawLine(kalem, 50, 50, 150, 50);

Formun ├╝zerine Line ├žizerken verilen koordinatlar 2 tane x ve y noktalar─▒d─▒r bu iki noktay─▒ belirtiriz ve DrawLine metodu bizim yerimize bu iki noktay─▒ birle┼čtirir ve ┼čekildeki gibi bir g├Âr├╝nt├╝ ortaya ├ž─▒kar.

Birde Dikd├Ârtgen Yuvarlak bi┼čiler ├žizelim.

grp.DrawEllipse(Pen nesnesi, X, Y, Geni┼člik, Y├╝kseklik);grp.DrawEllipse(kalem, 100, 100, 100, 100);


grp.DrawRectangle(Pen nesnesi, X, Y, Geni┼člik, Y├╝kseklik);

grp.DrawRectangle(Pens.Blue, 200, 100, 100, 100);


Bu ┼čekilleri ├žizerkende gerekli olan veriler ├Ânce bir kalem sonra X ve Y noktas─▒ ard─▒ndan ├žizilecek olan ┼čeklin y├╝kseklik ve geni┼člik bilgileridir.

Son olarak Pie yani kekden bahsetmek istiyorum ­čśÇ evet sizi keklemiyorum pasta grafik olarak adland─▒rd─▒m─▒z ┼čekli nas─▒l ├žizeriz ona bakal─▒m…

grp.DrawPie(Pen nesnesi, X, Y, Geni┼člik,Y├╝kseklik , Ba┼člang─▒├ž A├ž─▒s─▒, Yay A├ž─▒s─▒); 

grp.DrawPie(kalem, 50, 200, 100, 100, 0, 270);

┼×imdi birde bunlar─▒n i├ži dolu olanlar─▒ nas─▒l yaz─▒l─▒yor aralar─▒nda ne fark var g├Ârelim ­čśë

grp.FillEllipse(firca, 100, 100, 100, 100);grp.FillRectangle(firca, 200, 100, 100, 100);

grp.FillPie(Brushes.Purple, 50, 200, 100, 100, 0, 270);




GDI nesnesi sadece bu i┼čemi yarar diyebilirsiniz ­čśÇ Bu sadece ba┼člang─▒├ž bir sonraki yaz─▒da GDI nin as─▒l nas─▒l kullan─▒labildi─čini g├Ârece─čiz ­čśë

G├Âr├╝┼čmek ├ťzere…



C# _ Methods 329 374 mezo

C# _ Methods

Merhaba arkada┼člar programlar─▒ yazarken ├žo─ču kez bir i┼člemi birden fazla yerde yapmam─▒z gerekebilir.┬á Bu da her seferinde ayn─▒ kodu yazmak anlam─▒na geliyor ve buda bize hem zaman kayb─▒┬á hemde kod kar─▒┼č─▒kl─▒─č─▒na neden olacakt─▒r. Peki buna ├ž├Âz├╝m olarak yapaca─č─▒m─▒z i┼člemle alakal─▒ koda bir isim versek ve kullanmak istedi─čimiz yerde o kadar kodu tekrar tekrar yazmay─▒p sadece ismiyle ├ža─č─▒rsak nas─▒l olur ? Bence s├╝per olur ­čśÇ

Metotlar i┼čte bu i┼člemi yaparlar bir isimle ├ža─č─▒r─▒larak i├žersindeki i┼člemleri tek sat─▒rda ├ža─č─▒rabilmemizi sa─člar. Metotlar─▒ bir i┼čci olarak d├╝┼č├╝nebiliriz biz ona ne i┼č yapmas─▒ gerekti─čini s├Âyleriz ve ismini s├Âyledi─čimizde o i┼č yap─▒l─▒r.

├ľrnek olarak bir ├Â─črenci takip program─▒ yapt─▒─č─▒m─▒z─▒ d├╝┼č├╝nelim. Bu program i├žin ilk ├Ânce d├╝┼č├╝n├╝lmesi gereken form ├ľ─črenci Kay─▒t formudur ve bu form basit olarak a┼ča─č─▒daki gibi bi g├Âr├╝nt├╝ye sahip olacakt─▒r.

En basit i┼člemi d├╝┼č├╝necek olursak doldurulmu┼č olan textBox lar─▒n temizlenmesini istiyorum ve bunun i├žin form i├žersine bir Temizle butonu yerle┼čtiriyorum ve bu butonda b├╝t├╝n butonlar─▒ temizliyorum.

private void btnTemizle_Click(object sender, EventArgs e){









├çal─▒┼čt─▒rd─▒─č─▒mda kodlar─▒m─▒n ├žal─▒┼čt─▒─č─▒n─▒ g├Âr├╝yorum t├╝m alanlar temizleniyor ;).┬á Buraya kadar bir sorunumuz yok. Peki Kaydet butonuma bast─▒─č─▒mda kaydetme i┼člemleri tamamland─▒ktan sonra kullan─▒c─▒n─▒n yeni kay─▒t ekleyebilece─činide hesaba kat─▒p kaydetme i┼čleminden sonrada textBoxlar─▒ temizlememiz gerekiyor. Ayn─▒ kodlar─▒ tekrar yazarsak sorun kalmaz ama sadece bu kadarla kalmasak ve bu formda 2 den fazla yerde textBoxlar─▒ temizlemek istesek her seferinde bu kodlar─▒ tekrar tekrarm─▒ yaz─▒caz ? Diyelimki yazd─▒k program ├žal─▒┼č─▒yor. Daha sonra okul y├Ânetimi bizden 2 textbox daha koymam─▒z─▒ istedi. Biz yazd─▒─č─▒m─▒z Clear kodlar─▒na 2 sat─▒r daha eklememiz gerekicek ama bir ├žok yerde kulland─▒─č─▒m─▒z i├žin bir tanesini bile unutsak s─▒k─▒nt─▒ ├ž─▒kacakt─▒r. Bu kodlar─▒ merkezi bir yerde toplasak ve ihtiyac─▒m─▒z oldu─čunda sadece ismi ile ├ža─č─▒rsak nas─▒l olur ? ­čśë

Metotda de─či┼čiklik yapt─▒─č─▒m─▒zda t├╝m farkl─▒ yerlerde kulland─▒─č─▒m─▒z kodlarda de─či┼čecektir. Gelin nas─▒l yap─▒yoruz bu i┼člemi g├Ârelim . Bir Metot tan─▒mlayarak ayn─▒ i┼člemi birden fazla yerde yapal─▒m ­čśë

Void MetotAdi()


Yap─▒lacak i┼člem


private void btnTemizle_Click(object sender, EventArgs e){



private void btnKaydet_Click(object sender, EventArgs e)




private void Temizle()










G├Âr├╝ld├╝─č├╝ gibi tek bir metodu yani i┼č├žimi sadece ad─▒n─▒ ├ža─č─▒rarak i┼čimi yapt─▒rabiliyorum. ­čśë

Void metotlar ├Ârnekteki gibi sadece i├žersinde tan─▒mlanan i┼či yapar. Geriye bir de─čer d├Ând├╝rmezler.

Metot i├žersinde yap─▒lan i┼člem sonucu geriye bir de─čer d├Ând├╝rmek istiyorsak geriye d├Ânen de─čer tipinde bir metot olu┼čturmam─▒z gerekir. Yani i┼č├žimize i┼čini yap ama bana yapt─▒─č─▒na dair bilgi getir diyoruz. J

├ľrnek olarak iki say─▒y─▒ toplayarak sonucu geri deger olarak d├Ând├╝ren bir metot yazal─▒m.

private void btnTopla_Click(object sender, EventArgs e){



int Topla()


int sayi1 = 5;

int sayi2 = 6;

int sonuc = sayi1 + sayi2;

return sonuc;


G├Ârd├╝─č├╝m├╝z gibi i├žeride yap─▒lan i┼člemin sonucu metodun tipinde olmak zorunda.

Birde i├žeriye de─čer g├Ânderebildi─čimiz metot tipleri varki buda metot ÔÇô i┼č├ži metaforunu tamamlayan unsurlardan biz i┼č├žimizin eline malzemeleri veriyoruz ona sadece o malzemelerle ona s├Âylenmi┼č olan i┼či yapmak kal─▒yor. Ve yine bize bu malzemelerle yapt─▒─č─▒ i┼čin sonucunu d├Ânmek zorunda.

private void btnTopla_Click(object sender, EventArgs e){



int Topla(int sayi1 , int sayi2)


int sonuc = sayi1 + sayi2;

return sonuc;


Ne kadar kolay de─čilmi ? ­čśë

Bir sonraki yaz─▒m─▒zda g├Âr├╝┼čmek ├╝zere.

C# _ Diziler _ Foreach D├Âng├╝s├╝ 595 199 mezo

C# _ Diziler _ Foreach D├Âng├╝s├╝

Merhaba arkada┼člar bu yaz─▒m─▒zda da dizileri anlamaya ├žal─▒┼čaca─č─▒z.┬á Bu yaz─▒ sonunda dzi nedir , nas─▒l tan─▒mlan─▒r dizilerdeki boyut dizilerin metotlar─▒ ve foreach d├Âng├╝s├╝ ile alakal─▒ bilgi sahibi olacaks─▒n─▒z.

Daha ├Ânce de─či┼čkenler ile ilgili bir yaz─▒m─▒z vard─▒. Hat─▒rlarsak de─či┼čkenler program i├žersinde bize ge├ži├ži s├╝re gerekli olan de─čerleri tutabildi─čimiz yap─▒lard─▒ ├Ârne─čin int sayi = 5; diyerek 5 say─▒s─▒n─▒ sayi de─či┼čkeninde tutabiliyordum. Peki bu sayi de─či┼čkeninde birden fazla de─čer tutmam gerekirse bunu ger├žekle┼čtirebilirmiyim ? Cevap de─či┼čkenlerle hay─▒r ama Dizilerle evet.

Sizinde anlayaca─č─▒n─▒z gibi dizi de─či┼čkenleri, ayn─▒ tipte bir├žok veriyi bir arada tutmay─▒ sa─člar. Benzer i┼člemlerde kullan─▒lan de─či┼čkenler bir dizi alt─▒nda listelenebilir. Yani ben sayi de─či┼čkenimi dizi olarak tan─▒mlarsam o zaman birden fazla de─čeri i├žersinde tutabilirim.

Dizilerin tan─▒m─▒n─▒ yapt─▒ktan sonra gelin bu dizi nas─▒l bir┼čeymi┼č nas─▒l yaz─▒l─▒rm─▒┼č ona bir g├Âz atal─▒m.┬á Dizi tan─▒mlar─▒ veritiplerinin yan─▒nda [] simgeleri ile yap─▒l─▒r.

<veri tipi> [] dizi ismi = new <veri tipi> [dizi eleman say─▒s─▒]
String[] isimler;─░nt[] sayilar;

Float[] paralar;

Byte[] yaslar;

Dizilerin ka├ž eleman i├žerece─či, dizi tan─▒mlan─▒rken ya da daha sonra belirtilebilir. ┼×u ┼čekilde tan─▒mlanabilirler:

int[] sayilar = {3, 8, 2, 6};

int[] sayilar = new int[6]{4, 2, 5, 6, 7, 0};

int[] sayilar = new int[5];

Dizilerin indis numaralar─▒ 0 dan ba┼člar ve devam eder. Orne─čin isimleri tutaca─č─▒m─▒z bir dizi tan─▒mlad─▒k:

string[] isimler = new string[4];

de─čerlerini atarken yapaca─č─▒m─▒z i┼člem ┼ču olacakt─▒r.


─░simler[1]=ÔÇŁ YudumÔÇŁ;


─░simler[3]=ÔÇŁ OrhanÔÇŁ;

K├╝├ž├╝k bir dizi uygulamas─▒ yapal─▒m. Bir dizi ve elemanlar─▒n─▒ tan─▒mlayarak ListBox i├žersinde bu de─čeri g├Âsterelim.

─░┼čte bu kadar kolay bir de─či┼čken tan─▒mlar gibi fakat i├žersinde birden fazla de─čer ta┼č─▒yabilen bir de─či┼čken gibi d├╝┼č├╝nebiliriz.

Peki birden fazla boyuta sahip diziler tan─▒mlamak m├╝mk├╝nm├╝ ?┬á Yani tan─▒mlad─▒─č─▒m─▒z dizinin 1 eleman─▒da birka├ž de─čere sahip olsa …

Diziler tek boyutlu oldu─ču gibi, birka├ž boyutlu diziler de tan─▒mlanabilir. ┬á├ľrne─čin :

int [,] matris = new int[5,6];

Bu diziyi tan─▒mlad─▒─č─▒m─▒zda ├Ânce 5 elemanl─▒ bir dizi ard─▒ndan bu dizinin her eleman─▒ i├žinde 6 elemanl─▒k bir dizi tan─▒mlam─▒┼č oluruz.┬á Yani 2 boyut olu┼čturmu┼č oluruz.

Bu dizide bir boyut daha olsayd─▒, o boyutun her eleman─▒ i├žin di─čer boyutlardaki 30 eleman bulunacakt─▒. ├çok boyutlu dizilerin eleman say─▒lar─▒ boyutlar─▒ndaki eleman say─▒lar─▒n─▒ ├žarparak hesaplanabilir.

int [,,,,] dizi = new int[boyut1,boyut2,boyut3,… ,boyutn];

Dizilerin boyutlar─▒nada g├Âz att─▒ktan sonra gelin isterseniz bir ka├ž metodunada bakal─▒m.

Dizilerin Metotlar─▒


Resize metodu mevcut dizimizin eleman say─▒s─▒n─▒ istedi─čimiz kadar artt─▒r─▒r. Bir ├Ârnekle bakal─▒m bu olaya bir form ├╝zerinde listbox textbox ve butonumuz olsun ve textbox a yazd─▒─č─▒m─▒z de─čer string bir diziye ve listbox a eklensin istiyorum. ─░lk etapta ne kadar de─čer girilece─čini bilemiyece─čimizden ├Ânce 1 elemanl─▒ bir dizi tan─▒ml─▒yorum ve her eleman eklendi─činde dizi boyutunu artt─▒r─▒yorum.


Dizimiz i├žersindeki de─čerleri temizlemek isteyebiliriz i┼čte bu gibi durumlarda Array.Clear kullan─▒yoruz. Biraz ├Ânce yapt─▒─č─▒m─▒z proje ├╝zerinde ufak de─či┼čikliklerle Clear metodunu inceleyelim.

Foreach D├Âng├╝s├╝

Daha ├Ânceki yaz─▒m─▒zda bahsetti─čimiz d├Âng├╝ler aras─▒nda bir tane daha vard─▒ ama ona bu konunun sonunda de─činmek daha mant─▒kl─▒ sanki.

Foreach d├Âng├╝m├╝z bir dizi veya kolaksiyonun her eleman─▒ i├žin yap─▒s─▒ndaki kodlar─▒ ├žal─▒┼čt─▒ran bir d├Âng├╝d├╝r.

foreach (<tip de─či┼čkeni > in <koleksiyon> ){

Yap─▒lacak i┼člemler


Bilgiyle Kal─▒n…
M.Zeki Osmanc─▒k

C# | OOP Terminolojisi 150 150 mezo

C# | OOP Terminolojisi

Access Modifier : Bir tipe veya tipin ├╝yelerine eri┼čimi s─▒n─▒rlayan private, protected, internal, public gibi kelimelerdir.

Accessible Member : Verilen tip taraf─▒ndan ula┼č─▒labilen ├╝yedir. Bir tip ile eri┼čilebilen bir ├╝ye ba┼čka bir ├╝ye taraf─▒ndan eri┼čilebilir olmayabilir.

Accessor : Bir ├Âzellik (Property) ile ili┼čkilendirilmi┼č ├ľzel (private) veri alan─▒ (data field) ├╝yenin de─čerini alan veya ayarlayan metodlard─▒r. Okunur-Yaz─▒l─▒r ├Âzellikler get ve set eri┼čimcilerine sahipken salt okunur ├Âzellikler sadece get eri┼čimcisine sahiptirler.

Anonymous Method : Bir delegeye parametre olarak ge├žilirilen bir kod blo─čudur.

Base Class : T├╝retilmi┼č s─▒n─▒f (Derived Class) taraf─▒ndan miras al─▒nan s─▒n─▒ft─▒r (Inherited Class).

Call Stack : ├çal─▒┼čt─▒rma zaman─▒nda (runtime) program─▒n ba┼č─▒ndan ba┼člayarak ├žal─▒┼čt─▒r─▒lacak ifadeye kadar olan yap─▒lan metod ├ža─čr─▒lar─▒n─▒n dizisidir.

Class : Nesneyi tan─▒mlayan, nesneye ┼čablon olu┼čturan veri tipidir. S─▒n─▒flar veri ve veriyi etkileyen metodlardan her ikisini de i├žerebilirler.

Constructor: Bir s─▒n─▒f veya yap─▒ ├╝zerinde bulunan ve o tipteki nesneleri olu┼čturan ├Âzel metodlard─▒r.

Delegate : Bir metodu referans eden bir tiptir. Bir delege metoda atand─▒─č─▒nda tam olarak o metod gibi davran─▒r.

Derived Class : Ba┼čka bir taban s─▒n─▒f─▒n davran─▒┼č─▒na ve verisine eri┼čmek, geli┼čtirmek veya de─či┼čtirmek i├žin miras y├Ântemini kullanan s─▒n─▒ft─▒r.

Destructor : ├ľrne─čin sistem taraf─▒ndan sonland─▒r─▒lmas─▒n─▒ haz─▒rlayan, s─▒n─▒f veya yap─▒ ├╝zerindeki ├Âzel bir metodtur.

Event : Bir de─či┼čikli─čin bilgilendirmelerini g├Ânderen s─▒n─▒f veya yap─▒ ├╝yesidir.

Field: S─▒n─▒f─▒n ya da yap─▒n─▒n do─črudan eri┼čilen veri ├╝yesidir.

Generics : Jenerikler, bir s─▒n─▒f ya da metodun bir tip parametresi ile tan─▒mlanabilmesine olanak sa─člarlar. ─░stemci kodu tipin ├Ârne─čini yarat─▒rken parametre olarak tan─▒mlanan tipi belirli bir tipte de─či┼čken olarak tan─▒mlar. B├Âyle parametrenin hangi tipte oldu─ču tan─▒mland─▒─č─▒ndan s─▒n─▒f ya da metodta o tip olarak kullan─▒labilir.

IDE (Integrated Development Environment) : Derleyici, debug edici, kod d├╝zenleyici ve tasar─▒m ara├žlar─▒ gibi ├že┼čitli geli┼čtirme ara├žlar─▒ i├žin birle┼čtirilmi┼č bir aray├╝z sa─člayan uygulamalard─▒r.

Immutable Type : ├ľrnek yarat─▒ld─▒ktan sonra, ├Ârne─činin veri, alan ve ├Âzellikleri de─či┼čmeyen tiplerdir. De─čer tiplerinin ├žo─ču b├Âyle tiplerdir.

Inaccessible Member : Belirtilen bir tip taraf─▒ndan eri┼čilemeyen bir ├╝yedir. Bir tipe Eri┼čilmez bir ├╝yenin ba┼čka bir tipe de eri┼čilmez olmas─▒ gerekti─čine dair bir zorunluluk yoktur.

Inheritance : C#, Miras almay─▒ destekler. Yani bir s─▒n─▒f (class) taban s─▒n─▒f (base class) olarak adland─▒r─▒lan s─▒n─▒ftan t├╝retilir ve ayn─▒ metod ve ├Âzellikleri miras al─▒r. Bunu s─▒n─▒fa T├╝retilmi┼č S─▒n─▒f (Derived Class) denir.

Interface : Sadece public metod, olay ve delegelere ait imzalar─▒ i├žeren bir tiptir. Aray├╝z├╝ miras alan bir nesne aray├╝zde imzalar─▒ tan─▒mlanan t├╝m metod, olaylar─▒ geli┼čtirmek zorundad─▒r. S─▒n─▒flar veya Yap─▒lar (Structs) herhangi bir say─▒da aray├╝zden miras alabilirler…

Iterator : ├ľteleyici, bir s─▒n─▒f─▒n i├žerdi─či bir koleksiyon veya diziyi (array) s─▒n─▒f kullan─▒c─▒lar─▒n─▒n foreach ile kullanabilmesine olanak sa─člar.

Member : Bir s─▒n─▒f (class) ya da yap─▒ (struct) ├╝zerinde tan─▒mlana alan (field), ├Âzellik (property), metod (method) veya olaylara (events) o s─▒n─▒f─▒n ├╝yeleri (class members) denir.

Method: Bir s─▒n─▒f (class) ya da yap─▒ (struct) i├žin davran─▒┼č─▒ sa─člayan isimlendirilmi┼č kod blo─čudur.

Mutable Type : ├ľrnek yarat─▒ld─▒ktan sonra, ├Ârne─činin veri, alan ve ├Âzellikleri de─či┼čtirilebilen tiplerdir. Referans tiplerinin ├žo─ču b├Âyle tiplerdir.

Nested Type : Di─čer bir tipi tan─▒m─▒n─▒n i├žinde tan─▒mlanm─▒┼č tiptir.

Object : S─▒n─▒f ├Ârne─čidir (instance). Bir nesne bellekte bulunur ve verisi ve bu veriler ├╝zerinde etkisi olan metodlar─▒ vard─▒r.

Property : ├ľzellikler, eri┼čimcileri arac─▒l─▒─č─▒ ile bir veri ├╝yesine ula┼čt─▒r─▒rlar.

Refactoring :
Bilgisayar terminolojisinde bilgisayar yaz─▒l─▒m─▒n─▒n ├ž─▒kt─▒lar─▒n─▒ ve i┼člevlerini de─či┼čtirmeden i├ž yap─▒s─▒n─▒n yeniden d├╝zenlenerek uygulaman─▒n geli┼čtirilmesi, iyile┼čtirilmesi demektir. K─▒saca ├Ânceden girilmi┼č kodun tekrar kullan─▒lmas─▒ diyebiliriz. Visual Studio C# d├╝zenleyicisi ak─▒ll─▒ca kodunuzu tekrar bi├žimlendirebilir. Mesela i┼čaretledi─činiz bir kod blo─čunu bir hamleyle bir metoda d├Ân├╝┼čt├╝rebilirsiniz.

Reference Type : Bir veri tipidir. Referans tipi olarak tan─▒mlanan bir de─či┼čken verinin depoland─▒─č─▒ konumu i┼čaret eder.

Static : Statik olarak tan─▒mlanan bir s─▒n─▒f ya da metod “new” anahtar kelimesi ile ilklendirilmeden varolabilir.
├ľrne─čin Main() statik bir metoddur.

Struct : Tipik olarak baz─▒ mant─▒ksal ili┼čkileri olan de─či┼čkenler i├žermesi i├žin kullan─▒lan birle┼čik veri tipidir. Yap─▒lar ayn─▒ zamanda metodlar ve olaylar i├žerebilirler. Miras almay─▒ desteklemezken aray├╝z kullan─▒m─▒n─▒ desteklerler. S─▒n─▒flar referans tipiyken, yap─▒lar de─čer tipidir.

Value Type : ├ľbek (Heap) ├╝zerine yerle┼čtirilen referans tiplerine kar┼č─▒n y─▒─č─▒n (stack) ├╝zerine yerle┼čtirilen veri tipidir. Yap─▒ ve null de─čer alabilen (Nullable) tiplerin de oldu─ču gibi N├╝merik tipleri de i├žeren Yerle┼čik (built-in) tiplerin hepsi de─čer tipleridir. S─▒n─▒f tipi ve string tipi referans tipleridir.

kaynak: http://msdn2.microsoft.com/en-us/library/ms173231.aspx

Bilgiyle Kal─▒n…
M.Zeki Osmanc─▒k

C# _ D├Âng├╝ler _ For & While 490 448 mezo

C# _ D├Âng├╝ler _ For & While

Merhaba arkada┼člar bu yaz─▒m─▒zda C# programlama i├žersinde bulunan d├Âng├╝leri sizlere anlatmaya ├žal─▒┼čaca─č─▒m. Bu yaz─▒n─▒n sonunda ardarda i┼člemleri nas─▒l k─▒sa yolla yapabilirsiniz, for d├Âng├╝s├╝ ve while d├Âng├╝s├╝ ile ilgili bilgi sahibi olacaks─▒n─▒z. Haydi ba┼člayal─▒m… ­čśÇ
D├Âng├╝ler programlar─▒m─▒zda ardarda yada s─▒ral─▒ ┼čekilde yapt─▒raca─č─▒m─▒z i┼člemleri i├žin kullan─▒l─▒r. Fazla kod ,zaman kayb─▒ ve performans a├ž─▒s─▒ndan yarar sa─člarlar. Diyelim ki ├Â─črenci kayd─▒ yapabilece─čimiz bir windows form tasarl─▒yoruz ve bu windows formu ├╝zerinde combobox nesnemiz yer almakta y─▒l k─▒sm─▒n─▒n yanl─▒┼č yaz─▒lmas─▒n─▒ engellemek i├žin biz girerek ki┼činin sadece se├žme i┼člevini yerine getirmek istiyoruz. ─░lk akl─▒m─▒za gelen ComboBox nesnemizin items ├Âzelli─či ├╝zerinden t├╝m bilgileri girmek oldu de─čilmi ?

─░ster items ├Âzelli─činden doldural─▒m istersek kod ile doldural─▒m yinede bu i┼člem bize inan─▒lmaz vakit kayb─▒na neden olacakt─▒r. Peki bir kolay yolu yokmu bu i┼či yapman─▒n tabi ki var. D├Âng├╝ler bu konuda bizlere yard─▒mc─▒ oluyorlar. ┬á┬áYukar─▒da bahsetti─čimiz i┼člem i├žin sadece d├Âng├╝ kullanmam─▒z yetecektir.

For D├Âng├╝s├╝

for (ba┼člang─▒├ž; ko┼čul;art─▒m){

Yap─▒lacak i┼čler;


Belirtilen ba┼člang─▒├ž de─čerinden itibaren ko┼čul sa─članana kadar i├žine yaz─▒lan kod par├žas─▒n─▒ ├žal─▒┼čt─▒r─▒r ve bize s─▒ral─▒ i┼člemlerimizi h─▒zl─▒ca yapmam─▒z─▒ sa─člar. Buna g├Âre yukardaki i┼člemimiz nas─▒l oluyor g├Ârelim.

Ne kadar kolay de─čilmi ? ­čśÇ

Peki bu for d├Âng├╝s├╝ i├žersinde bir erken ge├ži┼č sa─člamak istersek o zaman ne yapmal─▒y─▒z?

for (int i = 1950; i < 2010; i++){

if (i == 1965)






Biraz ├Ânce ki doldurma i┼člemi s─▒ras─▒nda bir ko┼čul sa─član─▒yorsa o ko┼čulun sa─čland─▒─č─▒ de─čeri atlayarak d├Âng├╝ devam eder. Yani burada i 1965 oldu─čunda o sat─▒rdaki i┼člemi atlayacak ve 1966 dan devam edecek

Continue ile olu┼čan i┼člemi anlad─▒ysak birde ko┼čul sa─čland─▒─č─▒nda d├Âng├╝ i┼člemine son veren bir kodumuz daha var :


for (int i = 1950; i < 2010; i++){

if (i == 1965)






MessageBox.Show(“D├Âng├╝ Sonland─▒r─▒ld─▒.”);

Yine ayn─▒ i┼člem i├žin break i┼člemi yap─▒ld─▒─č─▒ zaman ko┼čul sa─član─▒yorsa d├Âng├╝den ├ž─▒karak sadece 1965 e kadar olan say─▒lar─▒ ComboBox nesnesi ├╝zerine ekler.


Bir d├Âng├╝n├╝n sonundaki erken ge├ži┼či sa─člar ko┼čul sa─članm─▒yorsa hi├ž bir i┼člem yapmadan ├ž─▒kar.

for (int i = 1950; i < 2010; i++){

if (i == 1965)






MessageBox.Show(“D├Âng├╝ Sonland─▒r─▒ld─▒.”);

While D├Âng├╝s├╝

Bir ba┼čka d├Âng├╝ t├╝r├╝ olan while bir ko┼čul sa─član─▒yorken d├Ânmeye devam eden d├Âng├╝ ├že┼čididir. Ko┼čul false ise d├Âng├╝ sona erer.


Yap─▒lacak i┼čler;


Ayn─▒ ├Ârne─čimizi While ile yapt─▒─č─▒m─▒zda bu kez biraz syntax de─či┼čiyor ama yapt─▒─č─▒m─▒z i┼člem ayn─▒.

Ko┼čulumuz sa─čland─▒─č─▒ s├╝rece yani i 2010 dan k├╝├ž├╝k oldu─ču s├╝rece i┼člemimizi s├╝rd├╝rd├╝ ve yine ayn─▒ ├Ârne─čimizdeki Combobox itemlerini ekledik.

While i en g├╝zel anlatan ├Ârnek belkide E┼č┼ček Sudan Gelinceye Kadar Dayak Yemek deyimi.

Hadi gelin bu ├Ârne─či yapal─▒m ­čśÇ

Do While D├Âng├╝s├╝

Di─čer d├Âng├╝lerden fark─▒ ko┼čul sonda kontrol edilir. Buda d├Âng├╝n├╝n en az 1 kere ├žal─▒┼čaca─č─▒ anlam─▒na gelir.


Yap─▒lacak i┼čler;

} while (ko┼čul);

Bilgiyle Kal─▒n…
M.Zeki Osmanc─▒k

C# _ Karar Yap─▒lar─▒ _ If-Else & Switch 522 236 mezo

C# _ Karar Yap─▒lar─▒ _ If-Else & Switch

Ger├žek hayatta bizlerin baz─▒ kararlar almak zorunda kald─▒─č─▒m─▒z gibi program─▒m─▒zada karar alma yetene─čini kazand─▒rabiliriz ├ž─▒kabilecek t├╝m sonu├žlar─▒ de─čerlendirerek ilgili i┼člemi yapabilecek duruma gelebilir. K─▒sacas─▒ program─▒m─▒za d├╝┼č├╝nme yetene─či kazand─▒rabiliriz.

If ÔÇô Else Karar Yap─▒s─▒

If..Else deyimi bir Boolean ifadeyi degerlendirerek program denetimi belirtilen deyim gruplar─▒na ge├žirir. Basit bir ├Ârnek olarak tatile ├ž─▒kmak istiyorsunuz ve mevcut paran─▒z 500 lira. Afirmas─▒nda┬á 1 haftal─▒k tatil 900 lira┬á┬á ,Bfirmas─▒nda 850 lira ,Cfirmas─▒nda 450 lira ,Dfirmas─▒ndada 300 lira bu 4 firma aras─▒nda se├žim yapmak gerekirse ilk iki firmay─▒ eledik bile. C ve D firmalar─▒ aras─▒ndaki se├žimimizede orada yapaca─č─▒m─▒z harcamalar─▒ g├Âz ├Ân├╝nde bulundurarak de─čerlendirecek olursak en uygun D firmas─▒ olaca─č─▒na karar veririz. ─░f yap─▒lar─▒da bu ┼čekilde ├žal─▒┼č─▒r. ─░f karar bloglar─▒ a┼ča─č─▒da belirtilen formatta yaz─▒l─▒r.

Bir ├žok program ve web sitesinde g├Ârd├╝─č├╝m├╝z kullan─▒c─▒ ad─▒ ve ┼čifrenin do─čru oldu─čuna karar verdi─čimiz basit bir program yazal─▒m.

Swicth ÔÇô Case

Mant─▒k olarak “if else” ko┼čul yap─▒s─▒na benzer. Kendisine g├Ânderilen parametreyi de─čerlendirir ve ona g├Âre ayr─▒lan kod blo─čunu ├žal─▒┼čt─▒r─▒r. Yani eleme yaparak parametrenin sahip oldu─ču de─čeri ile e┼čitlenen kod blo─čunu ├žal─▒┼čt─▒r─▒r.



case kosul1:

//kodlar bu panele gelecek


case kosul2:

//kodlar bu panele gelecek


case kosuln:

//kodlar bu panele gelecek



//e─čer hi├ž bir ko┼čul desteklenmiyorsa bu ko┼čul ger├žekle┼čecek



Bilgisayar─▒m─▒z─▒n saatini kontrol ederek g├╝n├╝n ├že┼čitli zamanlar─▒nda bize kar┼č─▒lama mesaj─▒ ├ž─▒kartan bir uygulama yazal─▒m

Bilgiyle Kal─▒n…
M.Zeki Osmanc─▒k

Algoritma 503 345 mezo


Algoritma Nedir?

Algoritmalar bir i┼čin nas─▒l yap─▒ld─▒─č─▒n─▒ ad─▒m ad─▒m hangi etaplardan ge├žerek ger├žekle┼čece─čini g├Âsteren bir ├žal─▒┼čma plan─▒d─▒r asl─▒nda. Algoritmalar┬á programlama dili de─čildir┬á sadece programlama dillerine klavuz g├Ârevi g├Âren bir y├Ântem dizisidir.Algoritmalar yaz─▒l─▒ ┼čekilde olabilece─či gibi semboller dizilimi ilede┬á kar┼č─▒m─▒za ├ž─▒kabilirler.

Algoritmalardaki y├Ântemler s─▒ras─▒

  • Veri Giri┼či
  • ─░┼člem
  • Kararlar

Veri Giri┼či : Yap─▒lan uygulamalar─▒n runtime k─▒sm─▒nda kullan─▒c─▒ taraf─▒ndan girilecek olan verilerdir.

Kararlar: Karar ve kontrol yap─▒lar─▒ algoritman─▒n ak─▒┼č─▒n─▒ y├Ânlendiren ├Ânemli kavramlard─▒r. Girilen veya i┼člem sonucu elde edilen veriler kontrol edilerek algoritma istenilen yere y├Ânlendirilir.

─░┼člem: Algoritmada belirtilen kararlar ve girilen veriler ile hangi i┼člemlerin ger├žekle┼čece─čini belirti─čimiz y├Ântemlerdir.


  • Girdi: S─▒f─▒r veya daha fazla de─čer d─▒┼čar─▒dan verilmeli.
  • ├ç─▒kt─▒: En az─▒ndan bir de─čer ├╝retilmeli.
  • A├ž─▒kl─▒k: Her i┼člem (komut) a├ž─▒k olmal─▒ ve farkl─▒ anlamlar i├žermemeli.
  • Sonluluk: Her t├╝rl├╝ olas─▒l─▒k i├žin algoritma sonlu ad─▒mda bitmeli.
  • Etkinlik: Her komut ki┼činin kalem ve ka─č─▒t ile y├╝r├╝tebilece─či kadar basit olmal─▒d─▒r.

Ak─▒┼č Diagramlar─▒

Bu diagramlar daha anla┼č─▒l─▒r bir┬á yap─▒ya sahip olmalar─▒ i├žin baz─▒ semboller ile belirtilen algoritma y├Ântemidir.Ak─▒┼č diagramlar─▒ farkl─▒ semboller yard─▒m─▒ ile haz─▒rlan─▒rlar┼čekilleri itibari ile anla┼č─▒lmas─▒ kolay problem ├ž├Âz├╝m├╝nde

yard─▒mc─▒ bir y├Ântemdir. ┼×imdi baz─▒ diagram ┼čekillerini tan─▒yal─▒m ve bir i┼člemin algoritmas─▒n─▒ ├žizelim.

├çay Demleme ─░┼čleminin Algoritmas─▒

ÔÇó┬á┬á┬á┬á┬á Kullan─▒c─▒dan su verilmesi beklenir.

ÔÇó┬á┬á┬á┬á┬á Suyu ─▒s─▒tma i┼člemi yap─▒l─▒r

ÔÇó┬á┬á┬á┬á┬á Suyun kaynad─▒─č─▒ kontrol edilir. Kaynamam─▒┼čsa ─▒s─▒tmaya devam eder

ÔÇó┬á┬á┬á┬á┬á Demli─če ├žay konulur.

ÔÇó┬á┬á┬á┬á┬á Kullan─▒c─▒dan al─▒nan demleme bilgisi ile ┼čimdiki zaman toplan─▒r ve s├╝re bulunur .

ÔÇó┬á┬á┬á┬á┬á ┼×imdiki zaman k├╝├ž├╝kse ├žay demlenmeye devam eder.

ÔÇó┬á┬á┬á┬á┬á ├çay─▒n demlendi─či mesajla bildirilir.

├çay Demleme ─░┼člemi Algoritma Diagram─▒

Bilgiyle Kal─▒n…
M.Zeki Osmanc─▒k

C# _ Hatalar ve Giderilmeleri _ Try-Catch 353 238 mezo

C# _ Hatalar ve Giderilmeleri _ Try-Catch

Hata Nedir ?

Programc─▒lar veya program─▒ kullanacak olan ┬áson kullan─▒c─▒lar kimi zaman baz─▒ kullan─▒m yada mant─▒ksal hatalar yapabilirler. Bu hatalar g├Âzden ka├žabilen mant─▒ksal hatalar olabilir son kullan─▒c─▒n─▒n program─▒ kullanmas─▒ s─▒ras─▒nda veya test a┼čamas─▒nda kar┼č─▒m─▒za ├ž─▒kabilir. ─░┼čte bu hatalar─▒n giderilmesi hata ├ž─▒kt─▒─č─▒ anda i┼člem kod blo─čunu terk etmesi i├žin i┼člemlerimizi try blo─ču i├žersinde yaz─▒yoruz bu blog i├žersinde bir hata meydana geldi─činde catch blo─ču ile hata durumunda ne gibi bir i┼člem yapaca─č─▒m─▒z─▒ belirtiyoruz.

Hatan─▒n Yakalama

├ľrnek olarak i┼č yerimizde ├žal─▒┼čan sar─▒┼č─▒n bir sekreterimiz i├žin 2 say─▒y─▒ toplamas─▒ i├žin ├žok basit bir hesap makinesi yazm─▒┼č olal─▒m. Sekreterimiz bu hesap makinesini kullan─▒rken say─▒sal de─čerler kullanmak zorunda. Peki say─▒sal olmayan bir de─čer girdi─činde program─▒n tepkisi ne olacakt─▒r ?

Bu sorunu program i├žersinde hata kontrol├╝ yaparak ├ž├Âzebiliriz. E─čer i┼člem blo─čumuzda hata olu┼čursa hata yakalanacak i┼člemden ├ž─▒kacak ve hata durumunda ne yapmas─▒n─▒ istemi┼čsek onu yapacak.


Birde programlar─▒m─▒zda hata olsun yada olmas─▒n ├žal─▒┼čmas─▒n─▒ istedi─čimiz baz─▒ kodlar yap─▒lmas─▒n─▒ istedi─čimiz i┼člemler olacakt─▒r. Bunlar hata ├ž─▒kmas─▒ durumunda bile ├žal─▒┼čacak olan kod bloklar─▒d─▒r. Finally blogu i├žersinde yer alan kodlar her ne hata olursa olsun ├žal─▒┼čacakt─▒r.

Bilgiyle Kal─▒n…
M.Zeki Osmanc─▒k

C# _ De─či┼čkenler ve Veri Tipleri 507 316 mezo

C# _ De─či┼čkenler ve Veri Tipleri

Merhaba arkada┼člar bu yaz─▒mda sizlere de─či┼čkenler denilen yap─▒lar─▒ anlatmaya ├žal─▒┼čaca─č─▒m. Haydi ba┼člayal─▒m ­čśë

De─či┼čken nedir nas─▒l tan─▒mlan─▒r?
Bir program ├žal─▒┼čt─▒r─▒rken t├╝m veriler ge├žici olarak haf─▒zada tutulur. De─či┼čkenler bu verilerin isimlendirilmesi i┼člemidir. De─či┼čken mant─▒─č─▒ g├╝nl├╝k ya┼čamdada ├žok kullan─▒lan bir mant─▒kt─▒r asl─▒nda. Akl─▒m─▒zdan iki say─▒ tutmam─▒z istendi─činde ve bu say─▒larla alakal─▒ i┼člem yapmam─▒z istendi─činde asl─▒nda isimlendirecek olursak sayi1 ve sayi2 olarak o say─▒lar─▒ akl─▒m─▒zda tutuyoruz. ─░┼čte bu sayi1 ve sayi2 sadece o an ge├ži├ži bir s├╝re i├žinde i┼člem yapmam─▒z i├žin kafam─▒zda ├╝retti─čimiz de─či┼čkenlerdir. Programlamadada ge├ži├ži olarak veri tutmak istedi─čimizde de─či┼čkenleri kullan─▒r─▒z.
<veri tipi> <de─či┼čken ad─▒>; ┼čeklinde tan─▒mlan─▒rlar.
string isim;
int rakam;
Tan─▒mlama Kurallar─▒
ÔÇóTan─▒mlanan de─či┼čkenlerin tipleri de─či┼čken isminden ├Ânce belirtilir.
ÔÇóDe─či┼čken isimlerini belirlerken baz─▒ noktalara dikkat etmek gerekir. Bo┼čluk, nokta, soru i┼čareti, noktal─▒ virg├╝l, ├žift t─▒rnak, tek t─▒rnak, aritmetik┬á operat├Ârler, kar┼č─▒la┼čt─▒rma ve atama operat├Ârleri, parantezler kullan─▒lamaz.
ÔÇó Say─▒ ile ba┼člayamaz.
ÔÇóVisual C#.NET dilinde tan─▒ml─▒ anahtar kelimeler kullan─▒lamaz.
ÔÇóDe─či┼čken isimlerinde T├╝rk├že karakter kullan─▒l─▒rsa, farkl─▒ dil se├ženekli i┼čletim sistemlerinde ├žal─▒┼čma an─▒nda hata ├╝retecektir.

Veri Tipleri

De─či┼čkenler program i├žinde, tuttuklar─▒ verilere ula┼čmak i├žin kullan─▒l─▒r. Ancak de─či┼čkenlere ula┼čmak, tan─▒mland─▒klar─▒ yerde veya alt┬á bloklarda m├╝mk├╝nd├╝r. Bu kavrama de─či┼čkenlerin kapsam alan─▒ (Scope) denir.
Kapsam alan─▒ d─▒┼č─▒ndaki bir yerden de─či┼čkene ula┼č─▒lamaz.

Veri tipi, de─či┼čkenlerin tuttuklar─▒ de─čerlerin t├╝r├╝n├╝ ve bellekte tutulacak boyutunu tan─▒mlar. De─či┼čkenleri veri tipleri ile tan─▒mlarken verinin┬á boyutuna g├Âre bir veri tipi se├žilmelidir. ─░ki tip veri tipi mevcuttur De─čer Tipleri (Value Type)┬á ve Referans Tipleri (Reference Type)

De─čer Tipleri (Value Type)

De─čer tipleri veriyi direk olarak bellek b├Âlgesinden al─▒rlar

Referans Tipleri (Reference Type)

Visual Studio 2008 Genel Bir Bak─▒┼č 500 339 mezo

Visual Studio 2008 Genel Bir Bak─▒┼č

Merhaba Arkada┼člar.

Yaz─▒ya ba┼člamadan ├Ânce sizleri bir terim ile alakal─▒ bilgilendirmek istiyorum bu terim ; IDE┬á sak─▒n harddisklerdeki ba─člant─▒ t├╝r├╝ ile kar─▒┼čt─▒rmay─▒n ­čśë IDE = Integrated Development Environment yani Entegrasyonlu Geli┼čtirme Platformu programlar─▒n geli┼čme a┼čamalar─▒n─▒n ger├žekle┼čti─či platformlard─▒r. Farkl─▒ diller i├žin farkl─▒ IDE ler geli┼čtirilmi┼čtir.

Biz bu IDE ler i├žersinde en geli┼čmi┼č olan─▒n─▒ kullanaca─č─▒m─▒z i├žin bende bu geli┼čmi┼č IDE yi sizlere basit├že tan─▒tmak istedim. Kullanaca─č─▒m─▒z IDE :

Visual Studio

Teknolojisini basit c├╝mlelerle anlatmak zor elbette ama ├Âzetlemek gerekirse ├žok gelimi┼č ├Âzelliklere ve yard─▒mc─▒ ara├žlara sahip bir IDE dir. Sadece tek bir dil i├žin geli┼čtirilmemi┼čtir bir ├Ânceki yaz─▒m─▒zda bahsetti─čimiz ┬á.Net uyumlu t├╝m programlama dillerinin desteklendi─či ve ayn─▒ projelerde dahi ├žal─▒┼čt─▒r─▒labildi─či bir ortamd─▒r.┬á Program geli┼čtirenlere kullan─▒┼čl─▒ ve kolay bir ortam sa─člayarak uygulamalar─▒n daha i┼člevsel olmas─▒ konusunda bizlere destek sa─člar.

Peki ne var bu Visual Studio nun i├žersinde.

Visual StudioÔÇÖyu genel g├Âr├╝n├╝m olarak 4 b├Âl├╝mde inceleyebiliriz;

*├çal─▒┼čma Sayfalar─▒

*Ara├ž ├çubuklar─▒



Visual Studio program─▒m─▒z─▒ ilk a├žt─▒─č─▒m─▒zda bizi Ba┼člang─▒├ž sayfas─▒ kar┼č─▒l─▒yor ve bizlere (e─čer internete ba─čl─▒ysak) MSDN den ├že┼čitli geli┼čme ve haberleri sunuyor. Visual studio i├žersinde web sayfalar─▒da a├žabiliyorsunuz bu arada. Start Page ba┼člang─▒├ž sayfam─▒z─▒n bulundu─ču k─▒sma daha sonra projelerimizi yazaca─č─▒m─▒z sayfalarda geliyor i┼čte bu alana ├çal─▒┼čma Sayfalar─▒ diyoruz. Sekmeler halinde pencerelerle ├žal─▒┼čabilece─čimiz bu ├žal─▒┼čma alan─▒ hem form veya web sayfalar─▒ tasar─▒mlar─▒nda hemde kod yazarken ├žok├ža kullanaca─č─▒m─▒z bir alan olacakt─▒r.

─░kinci olarak ├žo─ču programda gelenek haline gelmi┼č olan Ara├ž ├çubuklar─▒m─▒z var. Bu ara├ž ├žubuklar─▒ men├╝ komutlar─▒ i├žin g├Ârsel k─▒sayollar sunarak i┼čimizi kolayla┼čt─▒r─▒rlar. Benzer i┼člemler ayn─▒ ara├ž ├žubu─ču ├╝zerinde gruplanarak kullan─▒m dahada i┼člevsel hale gelir. Yada istersek biz bu ara├ž ├žubuklar─▒ ├╝zerindeki g├Ârsel k─▒sayollar─▒ de─či┼čtirerek ki┼čiselle┼čtirebiliriz de.

├ť├ž├╝nc├╝ olarak hemen hemen her programda┬á g├Ârmeye ve kullanmaya a┼čina oldu─čumuz Men├╝ler asl─▒nda t├╝m programlarda benzer niteliklerdedir. ├çe┼čitli komut ve yard─▒mc─▒ pencerelere ula┼čmam─▒zda bize kolayl─▒k ┬ása─člarlar.

Men├╝lerde bulunan temel ba┼čl─▒klar─▒ k─▒saca tan─▒yal─▒m :

File: Ad─▒ndanda anla┼č─▒laca─č─▒ gibi dosya i┼člemlerinin yap─▒ld─▒─č─▒ men├╝d├╝r yeni proje yada varolan projelerin a├ž─▒lmas─▒ gibi i┼člemleri bu men├╝ se├žene─či i├žersinde bulunan se├ženeklerden y├Ânetebiliriz.

Edit : T├╝m yaz─▒ ile ilgili d├╝zenleme i┼člemlerinin yer ald─▒─č─▒ men├╝d├╝r. Kopyala Kes Yap─▒┼čt─▒r Bul De─či┼čtir gibi se├ženekleri mevcuttur.

Project: ├ťzerinde ├žal─▒┼čt─▒─č─▒m─▒z projenin ├Âzelliklerinin y├Ânetilebilece─či referans ve dosya ekleme ├ž─▒karma gibi i┼člemlerin var oldu─ču men├╝d├╝r.

Built: Geli┼čtirdi─čimiz projelerin ├žal─▒┼čt─▒r─▒lmak ├╝zere i├žersinde bulunan komutlar─▒n derlenmesi i├žin gereken komutlara ula┼čabildi─čimiz men├╝d├╝r.

Debug : Ad─▒ndanda anla┼č─▒laca─č─▒ gibi Hata bulma ve ay─▒klama ile ilgili t├╝m se├ženeklerin bulundu─ču men├╝d├╝r.

Tools : Visual Studio ile birlikte y├╝klenen yard─▒mc─▒ ara├žlar─▒n bulundu─ču men├╝d├╝r. Ayr─▒ca Visual Studio ile alakal─▒ ayarlar─▒n yap─▒labildi─či Options se├žene─čide bu men├╝┬á alt─▒nda yer al─▒r.

Ve Help men├╝s├╝ san─▒r─▒m bunun a├ž─▒klamas─▒na gerek yoktur. =)

Visual Studio i├žersindeki yolculu─čumuza devam edelim ├žal─▒┼čma sayfalar─▒ ara├ž ├žubuklar─▒ men├╝ler derken son olarak belirtti─čimiz Pencereler┬á se├žene─čine geldik

D├Ârd├╝nc├╝ ve son olarak bahsedece─čimiz Pencerelerden kas─▒t ise Visual studio i├žersinde uygulama geli┼čtirme a┼čamas─▒nda s─▒k s─▒k kullan─▒labilecek olan bir├žok eleman─▒ bir araya getiren yada durum belirten pencerelerdir.

Bu pencerelerden ├žok kullan─▒lan bir ka├ž─▒n─▒ tan─▒mlamak gerekirse:

Properties: Projedeki t├╝m ├Â─čelerin ├Âzelliklerinin yer ald─▒─č─▒ bir penceredir. ─░stenen de─či┼čiklikleri yine bu pencere ├╝zerinden ger├žekle┼čtirmekde m├╝mk├╝nd├╝r.

ToolBox :Projelerde kullan─▒lan ├že┼čitli kontrollerin listelendi─či penceredir. Buradaki ├Â─čeler sekmeler i├žersinde gruplanm─▒┼čt─▒r.

Solution Explorer : Projeler bir solution (├ž├Âz├╝m) i├žersinde yer a├ž─▒l─▒r. Bir ├ž├Âz├╝m i├žersine farkl─▒ dilde ve tipte projeler dahil edilebilir.Bu pencere solution yap─▒s─▒n─▒ g├Âsterir ve ilgili i┼člemlerin yap─▒lmas─▒na olanak sa─člar.

Uygulama geli┼čtirirken en ├žok kullanaca─č─▒m─▒z pencereler olacakt─▒r.

Visual Studio yu basit├že olsa tan─▒m─▒┼č olduk geli┼čtirme ortam─▒n─▒ etkin bir ┼čekilde kullanmak ├Ânemlidir. Bu y├╝zden bu yaz─▒n─▒n klavuzlu─čunda┬á sizde biraz merak ile Visual Studio i├žersinde ne var ne yok kar─▒┼čt─▒rarakda bulabilirsiniz.

G├Âr├╝┼čmek Dile─čiyle.

Microsoft .Net ÔÇś e Giri┼č 547 203 mezo

Microsoft .Net ÔÇś e Giri┼č

Merhaba arkada┼člar programlama ile alakal─▒ ilk makaleme tabiki i┼čin en ba┼č─▒ndan ba┼člamam gerekiyor.┬á Elimden geldi─čince size yararl─▒ bilgiler sunmaya ├žal─▒┼čaca─č─▒m.Programlama dilleri ile ilgileniyorsak bu kelimeyi cok duymussunuzdur.
Peki nedir bu .Net denilen ┼čey ?Tek ba┼č─▒na tan─▒mlanamayacak bir sistemler b├╝t├╝n├╝d├╝r asl─▒nda; Microsoft taraf─▒ndan geli┼čtirilen┬á farkl─▒ teknoloji , ara├ž ve programlama dillerinin bir arada, tek bir iskelet ├╝zerinde ├žal─▒┼čmas─▒na olanak veren uygulama geli┼čtirme platformudur.
Uygulama derken neyi kastettim peki , asl─▒nda o kadar geni┼č bir kavram ki .Net platformunda uygulama diyorsak e─čer┬á akl─▒n─▒za gelebilecek her t├╝rl├╝ uygulamay─▒ bu kelime i├žersine s─▒─čd─▒rabiliriz. Web ,Windows,Mobile vb bir ├žok uygulamay─▒ geli┼čtirmemize olanak tan─▒r .
.Net g├╝zel bir ┼čeymi┼č tan─▒m─▒n─▒ duyunca heyecanland─▒k . Nas─▒l ├žal─▒┼č─▒r peki ? Nas─▒l bu kadar geni┼č bir ├žer├ževede programc─▒lara ├Âzg├╝rl├╝k sunabilir. Gelin .Net i├žersinde k─▒sa bir yolculuk yapal─▒m:
├ľncelikle .Net ile uygulama geli┼čtirebilmemiz i├žin onun kayna─č─▒n─▒ bilgisayar─▒m─▒za y├╝klemi┼č olmam─▒z gerekiyor.┬á┬á BCL (Base Class Library ) Temel S─▒n─▒f K├╝t├╝phanesi┬á┬áad─▒ verilen bu k├╝t├╝phane uygulama geli┼čtirmek i├žin gerekli olan aray├╝z ,s─▒n─▒f ,fonksiyonlar─▒ bar─▒nd─▒r─▒r bizlerde bu aray├╝z s─▒n─▒f ve fonksiyonlar─▒ kullanalarak uygulamalar─▒m─▒z─▒ kolayca geli┼čtirebiliriz.
.Net ├žok g├╝zel┬á ve k├╝t├╝phane olmak zorunda bunlar─▒ ├Â─črendik┬á┬á peki as─▒l soru geliyor hangi programlama dilini kullanmak gerekiyor?
Microsoft bu soruya bizim i├žin ├žok radikal bir bi├žimde karar vermi┼č bile .Net platformunu destekleyen herhangi bir programlama dili cevab─▒ san─▒r─▒m bizim i├žin yeterli . Her .Net uyumlu dilin kendine ├Âzg├╝ bir derleyicisi vard─▒r. Herhangi bir dilde yaz─▒lm─▒┼č uygulama derlendi─činde o dilin derleyicisi kodlar─▒ ortak bir dile ├ževirir.
Olu┼čan bu ortak dilin ad─▒ ise MSIL (Microsoft Intermediate Language) yani Microsoft un Ortak Dili . .Net platformu destekli programlama dillerinden herhangi biri veya birden fazlas─▒ ile bir uygulama geli┼čtirdi─čimizde o dilin derleyicileri┬á kodlar─▒ al─▒p MSIL e ├ževirerek hepsinin ayn─▒ anda makine diline ├ževrilmesini sa─člar.
Buraya kadar geldik yolculu─čumuz s├╝r├╝yor uygulamam─▒z─▒ yazd─▒k derledik┬á MSIL e ├ževirdik daha sonra bu kodlar─▒n i┼čletim sistemine ula┼čmas─▒ gerekiyor yani makine kodlar─▒na ├ževrilmesi gerekiyor bu i┼čide
CLR devral─▒yor ve MSIL kodlar─▒m─▒z─▒ al─▒p makine koduna ├ževiriyor ve i┼čletim sistemine iletiyor.
Bu i┼člemi yaparken JIT (Just In Time) derleme y├Ântemini kullanarak g├Ârevini tamaml─▒yor.
B├Âylelikle┬á .Net platformunda geli┼čtirdi─čimiz bir uygulamam─▒z─▒n hangi devrelerden ge├žerek kar┼č─▒m─▒za geldi─čini ve azda olsa .Net platformunun mant─▒─č─▒n─▒ umar─▒m anlayabilmi┼čsinizdir.
Sonraki Yaz─▒larda G├Âr├╝┼čmek ├ťzere…

    Join our Newsletter

    We'll send you newsletters with news, tips & tricks. No spams here.